诸位,可能是我写的题太少了,今天被输出错误折腾了半天。
本题输出要求number of digits in repeating cycle后有两个换行才能AC,
而不是两个输出之间隔一个空行。
基本思想 模拟手算除法 某个余数与前面一个余数相同后 前一个余数后开始出现的是循环部分
#include <stdio.h>
int r[100000],n[100000];
int main()
{
int a,b;
while(scanf("%d %d",&a,&b) != EOF) {
int cnt = 0,j=0;
n[0] = a/b;
printf("%d/%d = %d.",a,b,n[0]);
for(int i = 1;;i++)
{
r[cnt] = a%b;
a = a%b*10;
n[i] = a/b;
for(j = 0; j < cnt; j++) {
if(r[cnt] == r[j])
break;
}
if(cnt != j)
break;
cnt++;
}
for(int i = 1;i <= j; i++)
printf("%d",n[i]);
printf("(");
for(int i = j+1; i <= cnt && i <= 50;i++)
printf("%d",n[i]);
if(cnt > 50)
printf("...");
printf(")\n");
printf(" %d = number of digits in repeating cycle\n\n",cnt-j);
}
return 0;
}