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 |
这坑爹的数据.......写得又臭又长#include<iostream> #include<stdio.h> #include<string.h> #include<cmath> #include<cstdio> #include<string> #include<sstream> using namespace std; int number1[200][200]; int main() { string c; int a=0; int b; while(cin>>c>>b) { a=0; int s=0; int temp; int leng=c.length(); for(int i=0;i<leng;i++) { if(c[i]=='.') { for(int j=i+1;j<leng;j++) { s++; } break; } } int u=1; for(int i=leng-1;i>=0;i--) { if(c[i]!='.') { a+=(c[i]-'0')*u; u*=10; } } temp=a; double q=(double)a/pow(10.0,(double)s); if(a==0) { if(b!=0) { cout<<0<<endl; continue; } else { cout<<1<<endl; continue; } } if(b==0) { cout<<1<<endl; continue; } memset(number1,0,sizeof(number1)); int temp2=temp; int number2[200]; memset(number2,0,sizeof(number2)); int flag=0; while(temp2>0) { int r=temp2%10; number2[199-(flag)]=r; flag++; temp2/=10; } for(int i=0;i<200;i++) { number1[199][i]=number2[i]; } int number3[200]; memset(number3,0,sizeof(number3)); if(b==1) { for(int i=0;i<200;i++) { number3[i]=number2[i]; } } else for(int k=1;k<b;k++) { int number4[200]; for(int i=0;i<200;i++) { number4[i]=number1[199][i]; } int flag3=0; for(int i=199;i>=0;i--) { for(int j=199;j>=0;j--) { number1[i][j-flag3]=number4[j]*number2[i]; } flag3++; if(flag3==10)break; } memset(number3,0,sizeof(number3)); for(int i=199;i>=0;i--) { for(int j=199;j>=0;j--) { number3[i]+=number1[j][i]; } } memset(number1,0,sizeof(number1)); for(int i=199;i>=0;i--) { int temp=number3[i]; number3[i]=temp%10; number3[i-1]+=temp/10; } for(int i=199;i>=0;i--) { number1[199][i]=number3[i]; } } if((int)q==0) { cout<<"."; int flag=0; int w=200; for(int j=199;j>=0;j--) { if(number3[j]!=0) { w=j; break; } } for(int j=200-s*b;j<=w;j++) { cout<<number3[j]; } cout<<endl; } else { int kk=200; for(int i=200;i>200-s*b;i--) { if(number3[i]!=0) { kk=i; break; } } for(int i=0;i<200;i++) { if(number3[i]!=0) { for(int j=i;j<200;j++) { if(j==200-s*b&&kk!=200) { cout<<'.'; cout<<number3[j]; } if(j<200-s*b||(j>200-s*b&&kk!=200&&j<=kk)) cout<<number3[j]; } cout<<endl; break; } } } } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator