View Code
#include<stdio.h>
char s[100009];
bool hash[100009];
int main()
{
int a,b,i,j;
int t;
scanf("%d",&t);
while(t--)
{
scanf("%d",&b);
{
if(b<0)
{
printf("-");
b=-b;
}
a=1;
for(i=0;i<=b;i++)
{
hash[i]=0;
}
int add=1;
int qian;
qian=a/b;
a=a%b;
hash[a]=1;
s[0]='.';
while(a)
{
a=a*10;
s[add]=a/b+'0';
add++;
a=a%b;
if(hash[a]==1)break;
hash[a]=1;
}
s[add]=0;
printf("%d",qian);
printf("%s\n",s);
}
}
return 0;
}
usaco 多了加循环括号与76字符换行
View Code
#include<stdio.h>
#include<math.h>
char s[100009];
bool hash[100009];
int ji[100009];
int main()
{
int a,b,i,j;
int ge;
int t;
while(scanf("%d%d",&a,&b)!=EOF)
{
for(i=0;i<=b;i++)
{
hash[i]=0;
}
int qian;
qian=a/b;
a=a%b;
if(a==0)
{
printf("%d.0\n",qian);
continue;
}
for(i=1;i<=6;i++)
{
if(pow(10,i)>qian)
break;
}
ge=i+1;
hash[a]=1;
int add=0;
int kai=-1;
while(a)
{
a=a*10;
s[add]=a/b+'0';
add++;
a=a%b;
if(hash[a]==1)
{
kai=ji[a];
break;
}
hash[a]=1;
ji[a]=add;
}
printf("%d.",qian);
for(i=0;i<add;i++)
{
if(ge%76==0)
printf("\n");
if(kai==i)
{
printf("(");
ge++;
}
printf("%c",s[i]);
ge++;
}
if(kai==-1)
printf("\n");
else
{
if(ge%76==0)
printf("\n");
printf(")\n");
}
}
return 0;
}