2 条题解
-
1
#include<iostream> using namespace std; int main(){ // C++ 14级 13位ISBN号码的校验码 //978-7-121-4 1 4 8 9 - 3 //012345678910111213141516 int n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,sum=0; string s; cin>>s; n1=s[0]-'0'; n2=s[1]-'0'; n3=s[2]-'0'; n4=s[4]-'0'; n5=s[6]-'0'; n6=s[7]-'0'; n7=s[8]-'0'; n8=s[10]-'0'; n9=s[11]-'0'; n10=s[12]-'0'; n11=s[13]-'0'; n12=s[14]-'0'; sum=(n1+n3+n5+n7+n9+n11+(n2+n4+n6+n8+n10+n12)*3)%10; if(sum==0) n13=0; else n13=10-sum; //cout<<"sum:"<<sum<<" n13:"<<n13<<endl; if(n13==s[16]-'0') cout<<"yes"; else cout<<"no"; return 0; } -
0
#include<bits/stdc++.h> using namespace std; int main(){ // 13位ISBN号码的校验码 string s,s2=""; cin>>s; //全部输入 long long sum=0; for(int i=0;i<s.length();i++) if(s[i]>='0' and s[i]<='9') s2+=s[i]; //把数字提取出来,横线去掉 for(int i=0;i<s2.length()-1;i++){ //除过最后一位,前边的交替乘1和3做累加 if(i%2==0){ sum+=(s2[i]-'0'); }else{ sum+=(s2[i]-'0')*3; } } sum%=10; //累加完取余数 if(sum!=0) //余数不等于0的话再用10减去这个余数 sum=10-sum; if(sum==s2[s2.length()-1]-'0') //判断结果是否和最后一位相等 cout<<"yes"; else cout<<"no"; return 0; }
- 1
信息
- ID
- 1163
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 6
- 标签
- (无)
- 递交数
- 19
- 已通过
- 11
- 上传者