HDu 1296(多項式シミュレーション)
29908 ワード
タイトルリンク:http://acm.hdu.edu.cn/showproblem.php?pid=1296
なぜか今日は人柄がとても良かった...1Y....でもまた他の人のコードを探してみました..orz...私のクズコードですね...やっぱり貼っておきましょう...
View Code
なぜか今日は人柄がとても良かった...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 }