这题,不知道是在考输入输出还在考算法,心态爆炸
#include <bits/stdc++.h>
using namespace std;
const int N = 3000;
int b[N];
int a[N];
int main()
{
int n, d, start, end, i, j;
while (scanf("%d%d", &n, &d) != EOF) {
i = 0;
a[i] = n % d;
b[i] = a[i] * 10 / d;
for (i = 1; ; i++) {
a[i] = a[i - 1] * 10 % d;
b[i] = a[i] * 10 / d;
for (j = 0; j < i; j++)
if (a[j] == a[i])
break;
if (j < i) {
start = j;
end = i - 1;
break;
}
if (a[i] == 0) {
start = i;
end = i;
break;
}
}
printf("%d/%d = %d.", n, d, n / d);
for (i = 0; i < start; i++)
printf("%d", b[i]);
printf("(");
if (end - start + 1 > 50) {
for (i = start; i < start + 50; i++)
printf("%d", b[i]);
printf("...");
}
else {
for (i = start; i <= end; i++)
printf("%d", b[i]);
}
printf(")\n");
printf(" %d = number of digits in repeating cycle\n\n", end - start + 1);
}
return 0;
}