hdu 1296(多项式模拟)

来源:互联网 发布:安卓数据库 编辑:程序博客网 时间:2024/06/08 01:24

题目链接: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 }

 

0 0
原创粉丝点击