2 条题解

  • 1
    @ 2024-1-10 14:32:59
    #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
      @ 2025-11-22 15:10:09
      #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
      上传者