| ||||||||||
| 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 | |||||||||
给大家一个能过的代码,以供总是WA的同学参考#include<iostream>
using namespace std;
int Length(int a)
{
int k=0;
while(a/10!=0){k++;a=a/10;}
return k+1;
}
int main()
{
double a;
int n;
while(cin>>a>>n)
{
long int at[5000],bt[5000];
int btl;
int dot=0;
double ae=a;
if(Length((int)a)==1){dot=4;a=a*10000;}
else {dot=3;a=a*1000;}
dot=dot*n;
int k=a;
long int g=a;
int i=Length(k),j=4999;
btl=i;
while(i>0)
{
bt[j--]=k%10;
k=k/10;
i--;
}
if(n==1){ cout<<ae<<endl;continue;}
else n--;
while(n-->0)
{
k=0;
j=4999;
j=j-btl+1;
while(k<btl){at[k++]=bt[j];bt[j]=0;j++;}
k--;
j=4999;
while(k>=0)
{
bt[j-1]=(at[k]*g+bt[j])/10;
bt[j]=(at[k]*g+bt[j])%10;
k--;
j--;
}
int m=bt[j];
while(m>0)
{
bt[j--]=m%10;
m=m/10;
}
btl=4999-j;
}
if(j+1>4999-dot)
{ cout<<".";
for(int t=0;t<dot+j-4999;t++)
cout<<0;
}
int te=4999;
while(bt[te]==0&&te>4999-dot)te--;
int ie=te;
for(int it=j+1;it<=ie;it++)
{
if(it==4999-dot&&ie!=4999-dot)
{
cout<<bt[it]<<".";
}
else cout<<bt[it];
}
cout<<endl;
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator