与UVA202类似,依旧是抽屉算法,代码只需稍作修改即可实现
代码如下:
#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;
int main()
{
int x[1005],y[1005];
int a,b,n,i;
while(cin>>a>>b)
{
if(!a&&!b) //都为0时结束程序
exit(0);
n=0;
memset(x,0,sizeof(x));
memset(y,0,sizeof(y));
cout<<".";
x[n++]=a/b;
while(!y[a]&&a) //循环到整除或一个循环节结束为止
{
y[a]=n;
x[n++]=(a*10)/b;
a=(a*10)%b;
}
for(i=1;i<n;++i)
{
cout<<x[i];
if((i+1)%50==0) //50位换行
cout<<endl;
}
cout<<endl;
if(!a)
cout<<"This expansion terminates."<<endl;
else
cout<<"The last "<<n-y[a]<<" digits repeat forever."<<endl;
cout<<endl;
}
return 0;
}