64,646
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
#include<string.h>
int main()
{
char s[7];
int n,lena,decp;
char b[500],c[500];
lab1: while(scanf("%s%d",s,&n)>0)
{
char a[500]={0};
if(!strcmp(s,"0.0000")) {printf("0\n");goto lab1;}
strrev(s);
int i=0,j=0;
while(s[i]=='0') i++;
while(i&&i<(int)strlen(s)+1)
s[j++]=s[i++];
i=0;
int len=strlen(s);
while(s[i]!='.') i++;
decp=i*n;
for(;i<=len;i++) s[i]=s[i+1];
len--;
for(i=0;i<len;i++) {s[i]-=48;a[i]=s[i];}
lena=len;
int k=0;
int t;
while(--n)
{
t=0;
int tmp=0;
for(j=0;j<500;j++) c[j]=0;
for(i=0;i<len;i++)
{ if(!s[i]) goto lab;
for(j=0;j<500;j++) b[j]=0;
tmp=0;
for(j=0;j<lena;j++)
{
b[j+t]=s[i]*a[j]+tmp;
tmp=0;
if(b[j+t]>9)
{
tmp=b[j+t]/10;
b[j+t]%=10;
}
}
if(tmp) b[j+t]=tmp;
for(k=t;k<=t+lena;k++)
{
c[k]+=b[k];
if(c[k]>9)
{
c[k+1]+=c[k]/10;
c[k]%=10;
}
}
while(c[k]>9)
{
c[k+1]+=c[k]/10;
c[k]%=10;
k++;
}
lab: t++;
}
j=0;
while(j<k) {a[j]=c[j];j++;}
lena=j;
}
//output
while(!a[lena]) lena--;
if(decp>lena)
{
printf(".");
for(i=decp-lena-1;i>0;i--) printf("0");
while(lena)
printf("%d",a[lena--]);
printf("%d\n",a[0]);
}
else
{
for(i=lena;i>=0;i--)
if(i==decp&&decp!=0) printf("%d.",a[i]);
else printf("%d",a[i]);
printf("\n");
}
}
return 0;
}
#include<stdio.h>
#include<string.h>
int main()
{
char s[7];
int n,lena,decp;
char b[500],c[500];
lab1: while(scanf("%s%d",s,&n)>0)
{
char a[500]={0};
if(!strcmp(s,"0.0000")) {printf("0\n");goto lab1;}
strrev(s);
int i=0,j=0;
while(s[i]=='0') i++;
while(i&&i<(int)strlen(s)+1)
s[j++]=s[i++];
i=0;
int len=strlen(s);
while(s[i]!='.') i++;
decp=i*n;
for(;i<=len;i++) s[i]=s[i+1];
len--;
for(i=0;i<len;i++) {s[i]-=48;a[i]=s[i];}
lena=len;
int k=0;
int t;
while(--n)
{
t=0;
int tmp=0;
for(j=0;j<500;j++) c[j]=0;
for(i=0;i<len;i++)
{ if(!s[i]) goto lab;
for(j=0;j<500;j++) b[j]=0;
tmp=0;
for(j=0;j<lena;j++)
{
b[j+t]=s[i]*a[j]+tmp;
tmp=0;
if(b[j+t]>9)
{
tmp=b[j+t]/10;
b[j+t]%=10;
}
}
if(tmp) b[j+t]=tmp;
for(k=t;k<=t+lena;k++)
{
c[k]+=b[k];
if(c[k]>9)
{
c[k+1]+=c[k]/10;
c[k]%=10;
}
}
while(c[k]>9)
{
c[k+1]+=c[k]/10;
c[k]%=10;
k++;
}
lab: t++;
}
j=0;
while(j<k) {a[j]=c[j];j++;}
lena=j;
}
//output
while(!a[lena]) lena--;
if(decp>lena)
{
printf(".");
for(i=decp-lena-1;i>0;i--) printf("0");
while(lena)
printf("%d",a[lena--]);
printf("%d\n",a[0]);
}
else
{
for(i=lena;i>=0;i--)
if(i==decp&&decp!=0) printf("%d.",a[i]);
else printf("%d",a[i]);
printf("\n");
}
}
return 0;
}