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