这个题题意很简单,给出你分数,要你输出该分数的小数形式,但是写起来确实很麻烦,模拟么,没办法。
#include<cstdio>
#include<iostream>
#include<string.h>
using namespace std;
int n,d,res[110000],dd[1000000];
int main()
{
freopen("fracdec.in","r",stdin);
freopen("fracdec.out","w",stdout);
memset(res,0,sizeof(res));
cin>>n>>d;
int init=n/d;
cout<<init<<".";
n%=d;
res[n]=1;
int id=1,star,end,len=0;
bool flag=true;
while(n>0&&flag)
{
n*=10;
int tt=n/d;
n%=d;
dd[id++]=tt;
if(res[n]==0)
res[n]=id;
else
{
star=res[n]-1;
end=id;
flag=false;
}
}
if (id==1)
{
cout<<"0"<<endl;
return 0;
}
if(init==0)
len=1;
while(init>0)
{
init/=10;
len++;
}
if(!flag)
{
len++;
for(int i=1;i<=star;i++)
{
if(len==76)
{
cout<<endl;
len=0;
}
cout<<dd[i];
len++;
}
cout<<"(";
len++;
if(len==76)
{
cout<<endl;
len=0;
}
for(int i=star+1;i<end;i++)
{
cout<<dd[i];
len++;
if(len==76)
{
cout<<endl;
len=0;
}
}
cout<<")"<<endl;
}
else
{
for(int i=1;i<id;i++)
{
cout<<dd[i];
len++;
if(len==76)
{
cout<<endl;
len=0;
}
}
cout<<endl;
}
return 0;
}