| ||||||||||
| 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 | |||||||||
Re:哪位高手幫著看看啊,我也無語了,無限提交都是WA!!!In Reply To:哪位高手幫著看看啊,我也無語了,無限提交啊!!! Posted by:zhoufengg at 2008-11-29 19:24:47 > #include<stdio.h>
> #include<string.h>
> void add(char s1[1000],char s2[1000]);
> void switchstr(char s[1000],int length);
> char sumstr[1000];
> void main()
> {
> char R1[1000],R[1000],r[1000],ride[1000],sum[1000],sumts[1000];
> int n;
> int carry,mend;
> int i,t,a,b;
> int length,lengthg,ttt;
> while(scanf("%s%d",R,&n)!=0)
> {
> if(strcmp(R,"0.0000")>0&&strcmp(R,"99.999")<0&&n>0&&n<=25)
> {
> strcpy(sum,R);
> length=strlen(R);
> for(i=0;i<length;i++)
> if(R[i]=='.')
> {
> ttt=(length-i-1)*n;
> break;
> }
> if(i==length)
> ttt=0;
> n--;
> while(n--)
> {
> a=strlen(sum);
> strcpy(ride,"0");
> mend=0;
> while(a--)
> if(sum[a]!='.')
> {
> carry=0;t=0;b=strlen(R);
> for(i=0;i<mend;i++)
> r[t++]='0';
> mend++;
> while(b--)
> if(R[b]!='.')
> {
> r[t++]=((sum[a]-48)*(R[b]-48)+carry)%10+48;
> carry=((sum[a]-48)*(R[b]-48)+carry)/10;
> }
> if(carry!=0)
> r[t++]=carry+48;
> r[t]='\0';
> switchstr(r,strlen(r));
> add(ride,r);
> strcpy(ride,sumstr);
> }
> strcpy(sum,ride);
> }//while
> lengthg=strlen(sum);t=0;
> for(i=0;i<lengthg;i++)
> {
> if(i==(lengthg-ttt))
> sumts[t++]='.';
> sumts[t++]=sum[i];
> }
> sumts[t]='\0';
> t=0;length=strlen(sumts);
> for(i=0;i<length;i++)
> {
> if(sumts[i]=='0'&&t==0)
> continue;
> R1[t++]=sumts[i];
> }
> // printf("%d\n",length);
> while(R1[--t]=='0'&&ttt>0)
> ttt--;
> if(R1[t]=='.')
> t--;
> R1[++t]='\0';
> if(strlen(R1)==0)
> strcpy(R1,"0");
> printf("%s\n",R1);
> }
> else
> printf("input error.");
> }
> }//main
> void add(char s1[1000],char s2[1000])
> {
> int length1,length2;
> int carry,t;
> length1=strlen(s1);
> length2=strlen(s2);
> carry=0;t=0;
> while(length1&&length2)
> {
> length1--;length2--;
> sumstr[t++]=(s1[length1]+s2[length2]-96+carry)%10+48;
> carry=(s1[length1]+s2[length2]-96+carry)/10;
> }
> while(length1)
> {
> length1--;
> sumstr[t++]=(s1[length1]-48+carry)%10+48;
> carry=(s1[length1]-48+carry)/10;
> }
> while(length2)
> {
> length2--;
> sumstr[t++]=(s2[length2]-48+carry)%10+48;
> carry=(s2[length2]-48+carry)/10;
> }
> if(carry!=0)
> sumstr[t++]=carry+48;
> sumstr[t]='\0';
> switchstr(sumstr,strlen(sumstr));
> }
> void switchstr(char s[1000],int length)
> {
> int i;
> char temp;
> for(i=0;i<length/2;i++)
> {
> temp=s[i];
> s[i]=s[length-1-i];
> s[length-1-i]=temp;
> }
> }
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator