您的位置:首页 > 其它

202 - Repeating Decimals

2015-02-15 11:30 155 查看
看了半天也没思路,后来在纸上写,发现是高三经常算到的地方,余数出现第二次就是循环了。

#include<stdio.h>
#include<string.h>
int main()
{
int fz,fm,i=0,j,flag,x,y,m;
int yu[3100],shang[3100],ci[3100];
while(scanf("%d%d",&fz,&fm)!=EOF){i=0;
printf("%d/%d = %d.",fz,fm,fz/fm);flag=1;
for(j=0;j<3100;++j)
ci[j]=0;
while(flag){
yu[i]=fz%fm;
++ci[yu[i]];
if(ci[yu[i]]==2){
m=yu[i];y=i;flag=0;
}
shang[i]=fz/fm;
fz=yu[i]*10;
++i;
}
for(j=0;j<i;++j){
if(yu[j]==m){
x=j;break;
}
}
for(j=1;j<=x;++j)
printf("%d",shang[j]);
printf("(");
if(y-x-1){
if(y-x>50){
for(;j<=x+50;++j)
printf("%d",shang[j]);
printf("...");
}
else
for(;j<=y;++j)
printf("%d",shang[j]);
}
else
printf("%d",shang[y]);
printf(")\n %d = number of digits in repeating cycle\n\n",y-x);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: