| ||||||||||
| 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 | |||||||||
[1001]这个测试数据全都过了,结果还是WA了#include <iostream>
#include <math.h>
using namespace std;
int nlen,tlen;
int getintlen(char *R)
{
int i=0;
if(*R=='0')return 0;
while(*R!='.')
{
R++;
i++;
}
return i;
}
int getdecimal(char *R)
{
int i=0,flag=0,extra0=0,flag2=0,oridecimal=0;
while(*R!='\0')
{
if(*R=='0')
{
if(flag)extra0++;
else {flag=1;extra0=1;}
}
else
{
extra0=0;
flag=0;
}
if(flag2)oridecimal++;
if(*R=='.'){flag2=1;}
R++;
}
return oridecimal-extra0;
}
int getr(char *R)
{
int r;
while(*R!='\0')
{
r=r*10+*R-'0';
R++;
}
return r;
}
int Plus(int *c,int *b,int cuowei)
{
int i,j=0;
int flag=0;
for(i=1;i<=cuowei;i++)
{c++;j++;}
if(tlen+cuowei>nlen){nlen=tlen+cuowei;}
while(j<nlen)
{
*c=*c+*b+flag;
if(*c>=10)
{
flag=1;
*c-=10;
}
else
{
flag=0;
}
if((flag)&&(j==nlen-1))
{
nlen++;
}
j++;
c++;
b++;
}
}
int main()
{
char *R=new char[6];int n;
int *a,*b,*c;
int intlen,decimallen,len;
int i,j,k,t;
int r=0;
double temp;
while(cin>>R>>n)
{
intlen=getintlen(R);
decimallen=getdecimal(R);
nlen=tlen=len=intlen+decimallen;
temp=atof(R)*(pow(10,decimallen));
r=int(temp);
a=new int[len];
b=new int[len*n];
c=new int[len*n];
memset(a,0,sizeof(int)*len);
memset(b,0,sizeof(int)*len*n);
memset(c,0,sizeof(int)*len*n);
for(i=0;i<len;i++)
{
a[i]=b[i]=c[i]=r%10;
r=r/10;
}
for(i=0;i<n-1;i++)
{
for(j=0;j<len;j++)
{
if(j==0){t=a[j]-1;}else{t=a[j];}
for(k=0;k<t;k++)
{
Plus(c,b,j);
}
}
tlen=nlen;
for(k=0;k<nlen;k++)
{b[k]=c[k];}
}
for(i=nlen-1;i>=(len-intlen)*n;i--)
cout<<c[i];
cout<<".";
for(i=(len-intlen)*n-1;i>=0;i--)
cout<<c[i];
cout<<"\n";
delete []a;
delete []b;
delete []c;
}
}
刚来的,不是很懂
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator