大数除法——hdu2522,USACO2.4.5

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;
}
原文地址:https://www.cnblogs.com/huhuuu/p/1979866.html