这是一道模拟题。
/*
ID: guo geer
PROG: fracdec
LANG: C++
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
using namespace std;
int note[300000];
int f(int n)
{
int k=0;
if(n==0) return 1;
while(n)
{
n/=10;
k++;
}
return k;
}
int main()
{
freopen("fracdec.in","r",stdin);
freopen("fracdec.out","w",stdout);
int m,n;
while(scanf("%d%d",&m,&n)==2)
{
if(m%n==0)
{
printf("%d.0\n",m/n);
continue;
}
memset(note,0,sizeof(note));
int t=m%n;
for(int i=0;;i++)
{
note[t]=1;
t=(t*10)%n;
if(note[t]==1)break;
}
int Count=f(m/n);
printf("%d.",m/n);
m=m%n;
Count ++;
int times = 0;
for(int i=0;;i++)
{
if(m==t)
{
if(t==0) break;
if(times == 0)
{
printf("(");
Count++;
if(Count%76==0) printf("\n");
}
if(times == 1)
{
printf(")");
Count++;
break;
}
times ++;
}
printf("%d",(m*10)/n);
m=(m*10)%n;
Count++;
if(Count%76==0) printf("\n");
}
printf("\n");
}
return 0;
}