gsc15759915601 @ 2023-07-10 11:42:58
#include<bits/stdc++.h>
using namespace std;
long long n[11],m = 0,x,y,z;
char s[15];
int main(){
for(long long i = 1;i<=13;i++){
cin>>s[i];
}
for(long long i = 1;i<=13;i++){
if(i<2){
n[i] = s[i]-'0';
}else if(i>2&&i<6){
n[i-1] = s[i]-'0';
}else if(i>6&&i<12){
n[i-2] = s[i]-'0';
}else if(i>12){
x = s[i]-'0';
}
}
for(long long i = 1;i<=9;i++){
m += n[i]*i;
}
m %= 11;
if(m==x){
cout<<"Right";
return 0;
}
for(long long i = 1;i<=12;i++){
cout<<s[i];
}
cout<<m;
return 0;
}
by __Octhyccc__ @ 2023-07-10 12:21:27
@gsc15759915601
ISBN号码最后一位有可能是X,你判断了吗?
不解释了,奉上我的代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
string a;
cin>>a;//输入
int s[9];
int j=0,o=0;
for(int i=0;i<12;i++){
if(a[i]!='-'){
s[j]=a[i]-'0';
j++;//存每位非'-'的值,之后方便计算。
}
}
for(int i=0;i<9;i++){
o+=(s[i]*(i+1));//求和
}
if(o%11==10 && a[a.length()-1]=='X'){
cout<<"Right";
}
else if(o%11==10 && a[a.length()-1]!='X'){
for(int i=0;i<12;i++){
cout<<a[i];
}
cout<<'X';
}
else if(o%11==a[a.length()-1]-'0'){
cout<<"Right";
}
else{
for(int i=0;i<12;i++){
cout<<a[i];
}
cout<<o%11;
}//这些情况需要分类讨论
return 0;
}
互关一下吧,我先关了,关了私信
by gsc15759915601 @ 2023-07-10 12:40:35
谢谢各位
by gsc15759915601 @ 2023-07-10 12:47:14
代码已改正:
#include<bits/stdc++.h>
using namespace std;
long long n[11],m = 0,x,y,z;
char s[15],str;
int main(){
for(long long i = 1;i<=13;i++){
cin>>s[i];
}
for(long long i = 1;i<=13;i++){
if(i<2){
n[i] = s[i]-'0';
}else if(i>2&&i<6){
n[i-1] = s[i]-'0';
}else if(i>6&&i<12){
n[i-2] = s[i]-'0';
}
}
for(long long i = 1;i<=9;i++){
m += n[i]*i;
}
m %= 11;
if(m==10){
str = 'X';
}else{
str = m+'0';
}
if(str==s[13]){
cout<<"Right";
return 0;
}
for(long long i = 1;i<=12;i++){
cout<<s[i];
}
cout<<str;
return 0;
}