hdu 1296(多项式模拟)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1296
不知为什么今天人品特别好。。。1Y....不过又去搜了一下别人的代码。。。orz。。。我的渣代码啊。。。还是贴一下吧。。。
View Code
1 #define _CRT_SECURE_NO_WARNINGS 2 #include<iostream> 3 #include<cstring> 4 #include<cstring> 5 #include<cstdio> 6 #include<cmath> 7 using namespace std; 8 const int MAXN=1000+10; 9 10 11 int main(){ 12 char str[MAXN]; 13 int x; 14 while(~scanf("%d",&x)){ 15 scanf("%s",str); 16 int len=strlen(str); 17 int sum=0; 18 for(int i=0;i<len;i++){ 19 int y1=0,y2=0,j,k; 20 if(str[i]=='-'){ 21 y1=0; 22 if(str[i+1]!='X'){ 23 for(j=i+1;j<len;j++){ 24 if(str[j]!='X'&&str[j]!='+'&&str[j]!='-')y1=y1*10+str[j]-'0'; 25 else break; 26 } 27 if(j==len)sum-=y1,i=j; 28 else if(str[j]=='+'||str[j]=='-'){ 29 sum-=y1; 30 i=j-1; 31 } 32 else if(str[j]=='X'){ 33 y2=0; 34 if(j+1<len&&str[j+1]=='^'){ 35 for(k=j+2;k<len;k++){ 36 if(str[k]!='+'&&str[k]!='-')y2=y2*10+str[k]-'0'; 37 else break; 38 } 39 sum-=y1*(int)pow(x,y2); 40 i=k-1; 41 }else { 42 sum-=y1*x; 43 i=j; 44 } 45 } 46 }else if(str[i+1]=='X'){ 47 y2=0; 48 j=i+1; 49 if(j+1<len&&str[j+1]=='^'){ 50 for(k=j+2;k<len;k++){ 51 if(str[k]!='+'&&str[k]!='-')y2=y2*10+str[k]-'0'; 52 else break; 53 } 54 sum-=(int)pow(x,y2); 55 i=k-1; 56 }else { 57 sum-=x; 58 i=j; 59 } 60 } 61 }else if(str[i]=='+'){ 62 y1=0; 63 if(str[i+1]!='X'){ 64 for(j=i+1;j<len;j++){ 65 if(str[j]!='X'&&str[j]!='+'&&str[j]!='-')y1=y1*10+str[j]-'0'; 66 else break; 67 } 68 if(j==len)sum+=y1,i=j; 69 else if(str[j]=='+'||str[j]=='-'){ 70 sum+=y1; 71 i=j-1; 72 } 73 else if(str[j]=='X'){ 74 y2=0; 75 if(j+1<len&&str[j+1]=='^'){ 76 for(k=j+2;k<len;k++){ 77 if(str[k]!='+'&&str[k]!='-')y2=y2*10+str[k]-'0'; 78 else break; 79 } 80 sum+=y1*(int)pow(x,y2); 81 i=k-1; 82 }else { 83 sum+=y1*x; 84 i=j; 85 } 86 } 87 }else if(str[i+1]=='X'){ 88 y2=0; 89 j=i+1; 90 if(j+1<len&&str[j+1]=='^'){ 91 for(k=j+2;k<len;k++){ 92 if(str[k]!='+'&&str[k]!='-')y2=y2*10+str[k]-'0'; 93 else break; 94 } 95 sum+=(int)pow(x,y2); 96 i=k-1; 97 }else { 98 sum+=x; 99 i=j; 100 } 101 } 102 }else { 103 y1=0; 104 if(str[i]!='X'){ 105 for(j=i;j<len;j++){ 106 if(str[j]!='X'&&str[j]!='+'&&str[j]!='-')y1=y1*10+str[j]-'0'; 107 else break; 108 } 109 if(j==len)sum+=y1,i=j; 110 else if(str[j]=='+'||str[j]=='-'){ 111 sum+=y1; 112 i=j-1; 113 } 114 else if(str[j]=='X'){ 115 y2=0; 116 if(j+1<len&&str[j+1]=='^'){ 117 for(k=j+2;k<len;k++){ 118 if(str[k]!='+'&&str[k]!='-')y2=y2*10+str[k]-'0'; 119 else break; 120 } 121 sum+=y1*(int)pow(x,y2); 122 i=k-1; 123 }else { 124 sum+=y1*x; 125 i=j; 126 } 127 } 128 }else if(str[i]=='X'){ 129 y2=0; 130 j=i; 131 if(j+1<len&&str[j+1]=='^'){ 132 for(k=j+2;k<len;k++){ 133 if(str[k]!='+'&&str[k]!='-')y2=y2*10+str[k]-'0'; 134 else break; 135 } 136 sum+=(int)pow(x,y2); 137 i=k-1; 138 }else { 139 sum+=x; 140 i=j; 141 } 142 } 143 } 144 } 145 printf("%d\n",sum); 146 } 147 return 0; 148 }