//
后面的模数和前面相等的时候就循环了 注意状态开始的地方
//
#include<iostream>
#include<cstdio>
#include<string.h>
using namespace std;
const int maxn = 10000;
int vis[maxn+5];
int res[maxn+5];
int main()
{
int n, m;
while(scanf("%d%d", &n, &m) != EOF)
{
memset(vis,0,sizeof(vis));
memset(res,0,sizeof(res));
printf("%d/%d = %d.",n, m, n/m);
n %= m;
if(n==0)
{
cout << "(0)" << endl;
cout << " 1 = number of digits in repeating cycle" << endl; cout << "\n"; continue;
}
int s, t;
bool ok = false;
for(int i = 1; i < maxn; ++i)
{
if(!res[n%m])
{
res[n%m] = i;
n*=10;
vis[i] = n/m;
n%=m;
}
else
{
s = res[n%m];
t = i;
break;
}
}
for(int i = 1; i < s; ++i) cout << vis[i];
cout << "(";
for(int i = s; i < s+50 && i < t; ++i) cout << vis[i];
if(t-s>50) cout << "...";
cout << ")" << endl;
printf(" %d = number of digits in repeating cycle\n\n", t - s);
}
return 0;
}