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;
}