xiao_tuan_zi @ 2024-01-24 11:16:16
#include<bits/stdc++.h>
using namespace std;
int main(){
long long i,s,a,b,c,d,m;
char d1;
scanf("%d-%d-%d-%c",&a,&b,&c,&d1);
if(d1=='X'){
d=10;
}
else{
d=d1-48;
}
m=(a*1000+b)*100000+c;
for(i=1;i<=9;i++){
s+=m%10*(9-i+1);
s%=11;
m/=10;
}
if(s==d){
cout<<"Right";
}
else{
cout<<a<<'-'<<b<<'-'<<c<<'-';
if(s==10)
cout<<"X";
else
cout<<s;
}
return 0;
}
by midsummer_zyl @ 2024-01-24 11:24:06
@minjun
#include <bits/stdc++.h>
#define LL long long
using namespace std;
int main() {
char a, b, c, d, e, f, g, h, i, j;
int x;
scanf("%c-%c%c%c-%c%c%c%c%c-%c", &a, &b, &c, &d, &e, &f, &g, &h, &i, &j);
x = ((int(a) - 48) + (int(b) - 48) * 2 + (int(c) - 48) * 3 + (int(d) - 48) * 4 + (int(e) - 48) * 5 + (int(f) - 48) * 6 + (int(g) - 48) * 7 + (int(h) - 48) * 8 + (int(i) - 48) * 9) % 11;
if ((x == 10) && (j == 'X')) {
printf("Right");
return 0;
}
if ((x == 10) && (j != 'X')) {
printf("%c-%c%c%c-%c%c%c%c%c-%c", a, b, c, d, e, f, g, h, i, 'X');
return 0;
}
if (x == int(j) - 48) {
printf("Right");
return 0;
} else {
printf("%c-%c%c%c-%c%c%c%c%c-%d", a, b, c, d, e, f, g, h, i, x);
return 0;
}
return 0;
}
by JustPureH2O @ 2024-01-24 11:44:03
首先,用scanf
读入long long
时要用%lld
而不是%d
。
其次,在写类似于你代码里s
变量这种没有初始值,只有累加的变量时,一定要赋初始值为0
导致累加出错
#include<bits/stdc++.h>
using namespace std;
int main(){
long long i,a,b,c,d,m;
long long s = 0; // 变量赋初始值
char d1;
// 此处改动%d->%lld
scanf("%lld-%lld-%lld-%c",&a,&b,&c,&d1);
if(d1=='X'){
d=10;
}
else{
d=d1-48;
}
m=(a*1000+b)*100000+c;
for(i=1;i<=9;i++){
s+=m%10*(9-i+1);
s%=11;
m/=10;
}
if(s==d){
cout<<"Right";
}
else{
cout<<a<<'-'<<b<<'-'<<c<<'-';
if(s==10)
cout<<"X";
else
cout<<s;
}
return 0;
}