| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
1001OLE#include <stdio.h>
#include <string.h>
int calc(int [],int,int []);
void _print(int [],int,int);
int main(){
char a[6];
int n,i,t,j,b[125]={0},c[5],s,len;
while(1){
for(i=0;i<=124;i++)
b[i]=0;
scanf("%s",a);
scanf("%d",&n);
len=strlen(a);
j=5;
t=-1;
for(i=len-1;i>=0;i--){
if(a[i]=='.')
t=6-len+i;
a[j]=a[i];
j--;
}
for(i=j;i>=0;i--){
a[i]='0';
}
if(t==-1){
for(i=0;i<=4;i++)
a[i]=a[i+1];
a[5]='.';
t=5;
}
j=0;
for(i=0;i<=5;i++){
if(i!=t){
b[120+j]=a[i]-48;
c[j]=a[i]-48;
j++;
}
}
for(i=120;i<=124;i++){
if(b[i]!=0){
s=i;
break;
}
}
for(i=2;i<=n;i++){
s=calc(b,s,c);
}
_print(b,t,n);
}
}
int calc(int b[],int start,int c[]){
int e[6],i,j,d[125]={0},v;
for(i=124;i>=start;i--){
e[0]=0;
e[5]=0;
for(j=4;j>=0;j--){
e[j+1]+=b[i]*c[j]%10;
e[j]=b[i]*c[j]/10;
if(e[j+1]>=10){
e[j+1]-=10;
e[j]+=1;
}
}
for(j=5;j>=0;j--){
d[i-5+j]+=e[j];
if(d[i-5+j]>9){
d[i-5+j]-=10;
d[i-6+j]+=1;
}
}
}
v=-1;
for(i=start-5;i<=124;i++){
if(d[i]!=0&&v==-1){
v=i;
}
b[i]=d[i];
}
return v;
}
void _print(int b[],int t,int n){
char f[126];
int k,i,u=-1,w;
k=125;
if(125-k==n*(5-t)){
f[k]='.';
k--;
if(u==-1)
u=k;
}
for(i=124;i>=0;i--){
f[k]=b[i]+48;
if(f[k]!='0'&&u==-1){
u=k;
}
k--;
if(125-k==n*(5-t)){
f[k]='.';
k--;
if(u==-1)
u=k;
}
}
w=0;
for(i=0;i<=u;i++)
if(f[i]!='0'||w==1){
printf("%c",f[i]);
w=1;
}
printf("\n");
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator