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 }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值