给出两个数 a,b,求a和b的循环小数以及循环节长度
#include<iostream>
#include<cstring>
#include<cmath>
#define MAX_N 100005
int main()
{
int a,b;
int num[MAX_N],res[MAX_N];
while(scanf("%d%d",&a,&b)!=EOF){
memset(num,-1,sizeof(num));
int c=a%b,cnt=0;
c*=10;
while(num[c]==-1){
res[cnt]=c/b;
num[c]=cnt++;
c%=b;
c*=10;
}
int start=num[c];
printf("%d/%d = %d.",a,b,a/b);
for(int i=0;i<start;i++){
printf("%d",res[i]);
}
printf("(");
if(cnt-start<=50){
for(int i =start;i<cnt;i++){
printf("%d",res[i]);
}
printf(")\n %d = number of digits in repeating cycle\n\n",cnt-start);
}else{
for(int i=start;i<start+50;i++){
printf("%d",res[i]);
}
printf("...)\n %d = number of digits in repeating cycle\n\n",cnt-start);
}
}
return 0;
}
这道题终究没有自己做出来,还是看了题解,自己的思维还是不够灵活,经常被禁锢在很小的一块地方,而没有扩展出去,向外发散,继续努力