#include<cstdio>
#include<iostream>
#include<cstring>
#include<string>
#include<algorithm>
#define bug(x) printf("***%d\n",x)
typedef long long ll;
using namespace std;
int rec[3010],vis[3010],who[3010];
/*
利用抽屉原理,8个苹果放到7个抽屉中,肯定有一个是重复的
a/b,b的范围是1-3000,也就是说他的余数只有0-2999这些种情况,所以我们
最多只需要枚举3000次就可以算出来
*/
int main()
{
int a,b,t;
while(scanf("%d %d",&a,&b)==2){
memset(vis,0,sizeof(vis));
memset(rec,0,sizeof(rec));
t=a;
int cnt=0;
rec[cnt++]=a/b;
a=a%b;
while(!vis[a]&&a){
vis[a]=cnt;
who[cnt]=a;//这一位由上面的余数得来
rec[cnt++]=a*10/b;
a=a*10%b;
}
printf("%d/%d = %d",t,b,rec[0]);
printf(".");
for(int i=1;i<cnt&&i<=50;i++){
if(a&&who[i]==a) printf("(");
printf("%d",rec[i]);
}
if(!a)printf("(0");
if(cnt>50)printf("...");
printf(")\n");
printf(" %d = number of digits in repeating cycle\n\n",a==0?1:cnt-vis[a]);
}
return 0;
}
Repeating Decimals UVA - 202
最新推荐文章于 2021-01-30 19:39:41 发布