2 条题解

  • 1
    @ 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
      @ 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;
      }
      
      • 1

      信息

      ID
      1163
      时间
      1000ms
      内存
      256MiB
      难度
      3
      标签
      (无)
      递交数
      27
      已通过
      19
      上传者