分析:在除的过程中,当出现相同余数时即出现循环节。
#include<iostream>
using namespace std;
bool h[100002];
void div(int x)
{
int t;
memset(h,false,x*sizeof(h[0])+1);
h[1]=true;
t=1;
while(t)
{
t=t*10;
cout<<t/x;
t=t%x;
if(h[t]) //再次出现相同余数,表示出现循环节
break;
h[t]=true;
}
}
int main()
{
int T,n;
cin>>T;
while(T--)
{
cin>>n;
if(n<0)
{
cout<<"-";
n=-n;
}
if(n==1)
{
cout<<1<<endl;
continue;
}
cout<<"0.";
div(n);
cout<<endl;
}
return 0;
}
HDU ACM 2522 A simple problem 模拟除法
原文地址:http://blog.csdn.net/a809146548/article/details/46332585