siyeansh @ 2021-08-10 17:03:41
#include<bits/stdc++.h>
using namespace std;
int main(void){
char s[14],mod[12]="0123456789X";
gets(s);
int i,j=1,t=0;
for(i=0;i<12;i++) {
if(s[i]=='-') continue;
t+=(s[i]-'0')*j++;
}
if(mod[t%11]==s[12])printf("Right");
else {
s[12]=mod[t%11];
puts(s);
}
return 0;
}
by HYdroKomide @ 2021-08-10 17:09:10
@孤鹜断崖 int main(void)
应该不行吧
by siyeansh @ 2021-08-10 17:16:18
@Kevin_FOS 回,可以,这思路我是看题解的。
by SmokedFish @ 2021-08-10 17:23:00
@孤鹜断崖 简单来说就是 gets
会读到 \r
导致您 s
数组不能只开到 14,要再多开一个……或者换个字符串读入方式比如 scanf
by siyeansh @ 2021-08-10 17:30:04
@郑代梅zdm 回:多谢兄台已经过了,互关吧。
#include<bits/stdc++.h>
using namespace std;
int main(void){
char s[20],mod[12]="0123456789X";
gets(s);
int i,j=1,t=0;
for(i=0;i<12;i++) {
if(s[i]=='-') continue;
t+=(s[i]-'0')*j++;
}
if(mod[t%11]==s[12])printf("Right");
else {
s[12]=mod[t%11];
puts(s);
}
return 0;
}