3 条题解

  • 0
    @ 2025-2-6 19:50:13

    ISBN号码

    题目大意:

    给你一个字符串,把除最后一位识别码的其他数字分别乘以1,2...9的和加起来对11取余,如果余数为10,那么识别码为X,如果等于最后一位,就输出Right, 如果不等于,就输出正确的字符串

    模拟即可(细节看代码注释)

    用枚举除了最后一位数字之外的数字和,然后模掉 11,最后特判一下最后一位是 10 的情况,就好了

    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
    	int a,b,c,d,e,f,g,h,i,s1,s2;
    	char j;
        scanf("%1d-%1d%1d%1d-%1d%1d%1d%1d%1d-%c",&a,&b,&c,&d,&e,&f,&g,&h,&i,&j);
        s1=(a*1+b*2+c*3+d*4+e*5+f*6+g*7+h*8+i*9)%11;
        if(j=='X')
    		s2=10;
        else
    		s2=j-'0';
    		
        if(s1==s2)
        cout<<"Right";
        else if(s1==10)
        cout<<a<<"-"<<b<<c<<d<<"-"<<e<<f<<g<<h<<i<<"-X";
        else
        cout<<a<<"-"<<b<<c<<d<<"-"<<e<<f<<g<<h<<i<<"-"<<s1;
    	return 0;
    }
    

    最后求个赞qwq

    信息

    ID
    5113
    时间
    1000ms
    内存
    128MiB
    难度
    2
    标签
    递交数
    380
    已通过
    147
    上传者