@[违规用户名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