UVa202-Repeating Decimals
思路:
刚开始这个题目无从下手,后来看了别人的思路后恍然大悟,模拟手工运算除法,把每次取余的数存下来,如果这个数第二次出现那就是开始循环了,这个思路有了以后就是细心的问题了。
代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a,b,num[3005],i,j;
while(cin>>a>>b)
{
int mp[30005]={0};
printf("%d/%d = %d.",a,b,a/b);
a=a%b*10;
for(i=1; !mp[a]; i++)
{
mp[a]=i;
num[i]=a/b;
a=a%b*10;
}
for(j=1; j<i; j++)
{
if(j==mp[a]) printf("(");
if(j==51)
{
printf("...");
break;
}
printf("%d",num[j]);
}
printf(")\n");
printf(" %d = number of digits in repeating cycle\n\n",i-mp[a]);
}
return 0;
}