HDu 1296(多項式シミュレーション)

29908 ワード

タイトルリンク: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
",sum); 146 } 147 return 0; 148 }