50分求改错!!!QwQ

P1200 [USACO1.1] 你的飞碟在这儿 Your Ride Is Here

@[违规用户名js$dO^k5](/user/942304) ...你代码倒数第三行不应该是sum2吗,怎么还是Sum1
by xinran303 @ 2023-07-14 10:43:41


改完之后还是60分,所以先别急
by xinran303 @ 2023-07-14 10:44:43


```cpp #include<bits/stdc++.h> using namespace std; int i=1,x[7],sum1=1,sum2=1,j=1,y[7],o; int main(){ char a[7],b[7]; cin>>a>>b; while(i<=strlen(a)){ x[i]=int(a[i-1]-'A'+1); i++; } while(j<=strlen(b)){ y[j]=int(b[j-1]-'A'+1); j++; } for(o=1;o<=i-1;o++) sum1=(sum1*x[o])%47; for(o=1;o<=j-1;o++) sum2=(sum2*y[o])%47; if(sum1==sum2) cout<<"GO"; else cout<<"STAY"; return 0; } ``` 13,14行ij是多加一的所以要减1 \ 7、10行不用减一用 <= 应为你的ij从1开始正好到strlen()可以遍历一遍 \ 11行应该是 y 和 b 要不然覆盖了 x 和 a \ 8,11 char转int时候不能直接=,要减一下ASCII\ 14 是sum2,又覆盖了\ 15 题目要求输出“GO” 而且三目运算符不要乱用 用if else \ 提示:不要太依赖复制粘贴很多漏洞没有修改!! 还有就是尽量用for循环,while可读性不是很高 \ 建议:尽量使用标准写法,否则细节很容易出问题 (哇调了半个小时真的调了半个小时)\ AC-100, 继续加油 \ 附上我的代码参考 ```cpp #include<bits/stdc++.h> using namespace std; // a[2022],b[2023]; char a[114],b[514]; int main(){ cin>>a>>b; int la=strlen(a),lb=strlen(b); long long sum1=1,sum2=1; for(int i=0;i<la;i++) sum1*=a[i]-64; for(int i=0;i<lb;i++) sum2*=b[i]-64; if(sum1%47==sum2%47) cout<<"GO"; else cout<<"STAY"; return 0; } ```
by Unidean @ 2023-07-14 11:18:33


谢谢各位大佬!!!已关注
by D_M_S_C2310_47 @ 2023-07-14 12:34:37


|