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 |
我的数据好像都通的过,但就是ac不了,请各位帮我看看,谢了#include<stdio.h> #define N 130 #define M 6 #define H 15 char insert[M][N]; int insert1[M]; double in1[M]; int hb[M]; int Min(int a,int b){ if(a>b) return b; else return a; } void Add(char *Number1,char *Number2){ int c=0; int i; for(i=0;i<N;i++){ if(i>0){ if(Number1[i-1]>=10){ c=1; Number1[i-1]=Number1[i-1]-10; } else c=0; } Number1[i]=Number1[i]+Number2[i]+c; } } void Move(char *Number){ int flag=0; int i; for(i=N-1;i>0;i--){ if(Number[i-1]) flag=1; if((!Number[i])&&(!flag)) continue; Number[i]=Number[i-1]; } Number[0]=0; } char *S_Mul(char *Number,char k){ char c=0; int i; int j; static char array[N]; for(i=0;i<N;i++) array[i]=0; if((k>=10)&&(k<0)) return array; for(j=0;j<k;j++) Add(array,Number); return array; } void Mul(char *Number1,char *Number2){ char *pt; char Mid[N]; int i; for(i=0;i<N;i++) Mid[i]=0; for(i=0;i<N;i++){ pt=S_Mul(Number1,Number2[i]); for(int j=0;j<i;j++) Move(pt); Add(Mid,pt); } for(i=0;i<N;i++) Number1[i]=Mid[i]; } void _Power(char *Number,int k){ char bi[N]; int i; for(i=0;i<N;i++) bi[i]=Number[i]; if(k>1) for(i=1;i<k;i++) Mul(Number,bi); } void _In(){ double in[M]; long long k; int i; int j; for(i=0;i<M;i++){ scanf("%lf%d",&in1[i],&insert1[i]); in[i]=in1[i]; for(j=0;j<H+1;j++){ if((int)(in[i]/10000)){ hb[i]=j; break; } else in[i]=in[i]*10; } k=(long long)in[i]; for(j=0;j<H+1;j++){ insert[i][j]=k%10; k=k/10; } } } void _Print(){ int k; int down[M]; int up[M]; int i; int j; for(i=0;i<M;i++){ if(in1[i]<1){ for(j=0;j<N;j++){ if(insert[i][j]){ down[i]=j; break; } } } else { for(j=0;j<N;j++){ if(insert[i][j]){ down[i]=j; break; } } for(j=N-1;j>=0;j--){ if(insert[i][j]){ up[i]=j; break; } } } } for(i=0;i<M;i++){ if(in1[i]<1){ printf("."); for(int j=hb[i]*insert1[i]-1;j>=down[i];j--) printf("%d",insert[i][j]); printf("\n"); } else { for(j=up[i];j>=Min(down[i],(hb[i]*insert1[i]));j--){ if(j==hb[i]*insert1[i]-1) if(Min(down[i],(hb[i]*insert1[i]))!=(hb[i]*insert1[i])) printf("."); printf("%d",insert[i][j]); } printf("\n"); } } } int main(){ _In(); int a; for(a=0;a<M;a++) _Power(insert[a],insert1[a]); _Print(); return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator