xmu 1312求导 WA什么状况修改后运行超时

来源:互联网 发布:linux 输入输出重定向 编辑:程序博客网 时间:2024/05/18 04:01
#include<stdio.h>#include<string.h>#include<ctype.h>int main(){//freopen("1.txt","r",stdin);int a[1001],t1,t2,flag=0,f=0;int i=0,n;char c[1001],temp,buf[1000];memset(a,0,sizeof(a));memset(buf,0,sizeof(buf));fgets(buf,1000,stdin);n=strlen(buf);while(i<n-1){t1=0;t2=0;if(buf[i]=='-'){temp='-';i++;}else if(buf[i]=='+'){temp='+';i++;}elsetemp='+';if(buf[i]=='0'){i++;while(buf[i]=='0')i++;if(!isdigit(buf[i])){while(buf[i]!='+'&&buf[i]!='-'&& i!=n-1)i++;continue;}}while(isdigit(buf[i])){t1=t1*10+(buf[i]-'0');i++;}if(t1==0)t1=1;if(buf[i]=='x'){i++;if(buf[i]=='^'){i++;while(isdigit(buf[i])){t2=t2*10+(buf[i]-'0');i++;}if(temp=='+')a[t2]+=t1;if(temp=='-')a[t2]-=t1;}else{if(temp=='+')a[1]+=t1;if(temp=='-')a[1]-=t1;}}elsecontinue;}for(i=1;i<=1000;i++){if(a[i]!=0){a[i-1]=a[i]*i;a[i]=0;}                                                                                                                                                                }for(i=0;i<1000;i++)if(a[i]!=0){f=1;break;}for(i=1000;i>=0;i--){if(f==0){printf("%d",f);break;};if(a[i]!=0){if(flag==0 &&a[i]>0){flag=1;}else{if(a[i]>0)putchar('+');flag=1;}if(a[i]==-1)putchar('-');else if(a[i]!=1)printf("%d",a[i]);if(i==0)break;putchar('x');if(i>1){putchar('^');printf("%d",i);}}}putchar('\n');}


修改后运行超时
#include<stdio.h>#include<string.h>#include<ctype.h>int main(){//freopen("1.txt","r",stdin);int a[1001],b[10],t1,t2,flag=0,f=0;int i=0,j,n;char c[1001],temp,buf[1000];memset(a,0,sizeof(a));memset(b,-1,sizeof(b));memset(buf,0,sizeof(buf));fgets(buf,1000,stdin);n=strlen(buf);while(i<n-1){t1=0;t2=0;if(buf[i]=='-'){temp='-';i++;}else if(buf[i]=='+'){temp='+';i++;}elsetemp='+';if(buf[i]=='0'){i++;while(buf[i]=='0')i++;if(!isdigit(buf[i])){while(buf[i]!='+'&&buf[i]!='-'&& i!=n-1)i++;continue;}}while(isdigit(buf[i])){t1=t1*10+(buf[i]-'0');i++;}if(t1==0)t1=1;if(buf[i]=='x'){i++;if(buf[i]=='^'){i++;while(isdigit(buf[i])){t2=t2*10+(buf[i]-'0');i++;}if(temp=='+')a[t2]+=t1;if(temp=='-')a[t2]-=t1;}else{if(temp=='+')a[1]+=t1;if(temp=='-')a[1]-=t1;}}elsecontinue;}for(j=0,i=1;i<=1000;i++){if(a[i]!=0){f=1;b[j++]=i-1;a[i-1]=a[i]*i;a[i]=0;}                                                                                                                                                                }if(f==0)printf("%d",f);else{for(i=9;i>=0;i--){if(b[i]!=-1){if(flag==0 &&a[b[i]]>0){flag=1;}else{if(a[b[i]]>0)putchar('+');flag=1;}if(a[b[i]]==-1)putchar('-');elseprintf("%d",a[b[i]]);if(b[i]==0)break;putchar('x');if(b[i]>1){putchar('^');printf("%d",b[i]);}}}}putchar('\n');}