题目:https://www.luogu.com.cn/problem/UVA202
思路
首先要搞清楚怎么确定循环小数的位数,这点要根据被除数是否相等确定
剩下的就是把a/b的每一个结果存到数组里面,最多存五十位就够了(题目要求)
最后就是按格式输出
#include<iostream>
#include<cstring>
using namespace std;
int ans[100],num[30010];
int main(){
int a,b;
while(scanf("%d%d",&a,&b) != EOF){
memset(num,0,sizeof(num));
printf("%d/%d = %d.",a,b,a/b);
a = a%b;
int k = 1,t = 1;
while(true){
a*=10;
if(k<=50)
ans[k++] = a/b;
if(num[a]){
int i;
for(i = 1;i<num[a] && i<= 50;i++) printf("%d",ans[i]);
printf("(");
for(;i<t && i <= 50;i++) printf("%d",ans[i]);
if(t>50){
printf("...");
}
printf(")\n");
printf(" %d = number of digits in repeating cycle\n\n",t-num[a]);
break;
}else num[a] = t;
t++;
a = a%b;
}
}
return 0;
}