DoubleCats @ 2023-11-10 22:24:12
#include<bits/stdc++.h>
using namespace std;
int tt[114514],lst,sum;
char s1[114154];
int main(){
for(int i=1;i<=13;i++){
char a;
cin>>a;
s1[i]=a;
if(a=='-') tt[i]=0;
else if(a=='X') tt[i]=11;
else tt[i]=a-'0'+1;
}
//求和
{
int ttt=0;
for(int i=1;i<=9;i++){
//首位数字乘以 1加上次位数字乘以 2 ……
if(tt[i]==0){//当tt[i]是0("-")时 ttt++;
ttt++;
}
sum=sum+(tt[i+ttt])*i;
}
}
//计算识别码
lst=sum%11;
if(lst==tt[13]-1) cout<<"Right";
else{
for(int i=1;i<=12;i++){
if(tt[i]==0) cout<<"-";
else if(tt[i]==10) ;
else cout<<tt[i]-1;
}
if(lst==10) cout<<"X";
else cout<<lst;
}
// if(sum==10) cout<<"X";
// else cout<<sum;
return 0;
}
代码如上 输入:7-115-13880-4 输出:7-115-13880-1 应输出:7-115-13880-X 一晚上了啊啊,帮帮孩子吧 QWQ
by Azzero @ 2023-12-01 11:31:40
为啥存数字的数组,每一位都要加1,后面输出的时候还要减1.
by ltzx2022_kanxinyi_5 @ 2023-12-01 15:44:30
@Doubles_Cats 搞复杂了,可以参考代码
#include <bits/stdc++.h>
using namespace std;
string s;
char c;
int a,b;
int main(){
cin>>s;
for(int i=0;i<11;i++)
if(s[i]!='-')//判断是不是数字
b++,a+=b*(s[i]-'0');//转成普通数字
a%=11;
if(a==10) c='X';
else c=a+'0';//转回来
if(c==s[12]) cout<<"Right";
else{
s[12]=c;
cout<<s;
}
return 0;
}
一份简简单单的代码,如果你AC了,那就给个关注吧