| ||||||||||
| 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 | |||||||||
我是新手 累计奋战10多个小时 终于accepted!代码如下,和大家交流一下 #include<iostream>
using namespace std;
void calculate(int a[],int n,int tag)
{
int m,i,j,s,t,k,g=0,flag;
int b[200],c[200],d[200];
for(i=0;i<200;i++)b[i]=d[i]=c[i]=-1;
for(i=0;a[i]!=-1;i++)
b[i]=a[i];
n--;
while(n)
{
flag=1;k=-1;
for(i=0;a[i]!=-1;i++)
{
t=0;s=0;g=0;k++;
for(j=0;b[j]!=-1;j++)
{
m=(a[i]*b[j])%10+t;
t=(a[i]*b[j])/10;
if(m>=10){c[g]=m%10;t++;}
else c[g]=m;
g++;
}c[g]=t;g=0;
if(flag)
{
for(j=0;c[j]!=-1;j++)
d[j]=c[j];
flag--;
}
else
for(j=0;c[j]!=-1;j++)
{
m=d[g+k]+c[j];
if((d[g+k+1]==-1)&&(c[j+1])!=-1)d[g+k+1]=0;
t=m%10+s;
s=m/10;
if(t>=10){d[g+k]=t%10;s++;}
else d[g+k]=t;
g++;
}
for(j=0;j<200;j++)c[j]=-1;
}//for
for(i=0;i<200;i++)
b[i]=d[i];
for(i=0;i<200;i++)
d[i]=-1;
n--;
}//while
j=0;flag=0;
for(i=0;i<200;i++)
{
if(!b[i]&&tag>i)j++;
else
break;
}
for(i=199;i>=j;i--)
{
if(b[i]!=-1)
{
if(b[i]==0)
{if(flag)cout<<b[i];}
else
{cout<<b[i];flag=1;}
}
if(i==tag&&tag!=j){cout<<".";flag=1;}
}
cout<<endl;
}
int main()
{
int n,i,j,tag;
int a[7];char str[7];
while(cin>>str>>n)
{
tag=1;
for(i=0;i<7;i++)a[i]=-1;
for(i=0;str[i]!='\0';i++)
{
if(str[i]!='.')tag++;
else
{
for(;i<7;i++)
str[i]=str[i+1];
break;
}
}
for(i=0;str[i]!='\0';i++);
for(j=0;j<=i-1;j++)
a[j]=str[i-1-j]-'0';
tag=n*(6-tag);
calculate(a,n,tag);
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator