比赛 |
东方幻想乡 S1 |
评测结果 |
AAAAAAAAAAAAAAAAAAAA |
题目名称 |
西行寺幽幽子 |
最终得分 |
100 |
用户昵称 |
王者自由 |
运行时间 |
0.587 s |
代码语言 |
C++ |
内存使用 |
0.71 MiB |
提交时间 |
2012-08-07 19:50:26 |
显示代码纯文本
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int S = 20000 + 10;
char s[S], t[S];
int a[S], b[S], c[S], d[S], e[S];
void pa(int x[]) {
for(int i=x[0]; i>=0; i--)
fprintf(stderr, "%d", x[i]);
fprintf(stderr, "\n");
}
int cmp() {
int l = max(b[0], d[0]);
for(int i=l; i>0; i--)
if(d[i] != b[i]) return d[i] - b[i];
return 0;
}
void times() {
for(int i=d[0]; i>0; i--)
d[i+1] = d[i];
d[1] = 0;
d[0]++;
}
void minus() {
int l = max(b[0], d[0]);
memset(e, 0, sizeof(e));
for(int i=1; i<=l; i++) {
e[i] += d[i] - b[i];
if(e[i] < 0) {
e[i+1]--;
e[i] += 10;
}
}
while(l > 1 && !e[l]) l--;
e[0] = l;
memcpy(d, e, sizeof(e));
}
void div() {
int l = a[0];
d[0] = 1;
for(int i=l; i>0; i--) {
times();
d[1] = a[i];
while(cmp() > 0) {
minus();
c[i]++;
}
}
while(l > 1 && !c[l]) l--;
c[0] = l;
}
int main() {
freopen("spring.in", "r", stdin);
freopen("spring.out", "w", stdout);
scanf("%s\n%s\n", s, t);
a[0] = strlen(s);
b[0] = strlen(t);
for(int j=1, i=a[0]; i>0; i--)
a[j++] = s[i-1]-'0';
for(int j=1, i=b[0]; i>0; i--)
b[j++] = t[i-1]-'0';
div();
for(int i=c[0]; i>0; i--)
printf("%d", c[i]);
printf("\n");
return 0;
}