• 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 }
  • 相关阅读:
    MySQL for OPS 02:SQL 基础
    Samba:基于公网 IP 的服务访问
    MySQL for OPS 01:简介 / 安装初始化 / 用户授权管理
    Samba:打造企业级授权文件共享服务器
    嵌入式web server——Goahead移植要点
    libConfuse的使用
    【工具篇】notepad++
    使用sprintf打印float并控制小数位数时引起的问题
    【工具篇】source Insight
    【工具篇】xshell
  • 原文地址:https://www.cnblogs.com/wally/p/3043712.html
Copyright © 2020-2023  润新知