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 }

 

posted @ 2013-04-25 22:41  ihge2k  阅读(357)  评论(0编辑  收藏  举报