4 条题解

  • 2
    @ 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

    • 1
      @ 2025-4-1 9:26:23

      import java.util.Scanner;

      public class Main2 {

      public static void main(String[] args) {
          Scanner sc = new Scanner(System.in);
      
          //用字符串来收纳输入的编号
          String str = sc.next();
      
          //将字符串转化为数组
          char[] charArr = str.toCharArray();
      
      
          //再创建一个int类型的数组,来存储转化后的数字,index表示intArr的索引
          int[] intArr = new int[10];
          int index = 0;
          //0-670-82162-4这是数组存储的内容,如果最后一位是'X',这里便不会存入
          for (int i = 0; i < charArr.length; i++) {
              if (charArr[i] >= '0' && charArr[i] <= '9') {
                  intArr[index] = charArr[i] - '0';
                  index++;
              }
          }
      
          //计算最后一个识别码数字是否正确,sum是前面数字题目要求的和
          int sum = 0;
          for (int i = 0; i < intArr.length - 1; i++) {
              sum += intArr[i] * (1+i);
          }
      
          //算出最后一位数字是几
          int result = sum % 11;
      
      
          if (result == intArr[9]) {
              System.out.println("Right\n");
          } else if(result == 10) {
              //如果最后一位是'X',那就是正确的,直接输出Right
              if (charArr[charArr.length - 1] == 'X') {
                  System.out.println("Right ");
              } else {
                  //最后一位不是'X',要输出正确的内容
                  char temp = 'X';
                  charArr[charArr.length - 1] = temp;
                  for (int i = 0; i < charArr.length; i++) {
                      System.out.print(charArr[i]);
                  }
              }
          } else {
              //因为result是以int类型存储在电脑里的,若是直接(char)(result) 会打出乱码,因为可以显示的ASCII表中的东西一般是32到100,所以前面+ '0'
              char temp = (char)('0' + result);
              charArr[charArr.length - 1] = temp;
              for (int i = 0; i < charArr.length; i++) {
                  System.out.print(charArr[i]);
              }
          }
      }
      

      }

      • -3
        @ 2024-12-5 20:13:43

        #include<bits/stdc++.h> using namespace std; string a; int b[9]={0, 2, 3, 4, 6, 7, 8, 9, 10},s = 0; char x; int main(){ cin >> a; for(int i = 0;i < 9;i++) s += (a[b[i]] - '0') * (i + 1); s %= 11; if(s == 10) x='X'; else x = s+'0'; if(x == a[12]) cout << "Right"; else { for(int i = 0;i < 12;i++) cout << a[i]; cout << x; } return 0; }

        • -3
          @ 2024-11-10 10:00:37

          AC+CE=

          #include<bits/stdc++.h>
          #define int unsigned long long
          #define INF 0x3f3f3f
          using namespace std;
          char c[11];
          int a[11];
          char c_;
          int ans;
          void print()
          {
          	cout<<a[1]<<"-";
          	for(int i=2;i<=4;i++)cout<<a[i];
          	cout<<"-";
          	for(int i=5;i<=9;i++)cout<<a[i];
          	cout<<"-";
          	if(ans!=10)cout<<ans;
          	else cout<<"X";
          }
          signed main()
          {
          	scanf("%c-%c%c%c-%c%c%c%c%c-%c",c+1,c+2,c+3,c+4,c+5,c+6,c+7,c+8,c+9,&c_);
          	for(int i=1;i<=9;i++)
          		a[i]=c[i]-48;
          	for(int i=1;i<=9;i++)
          		ans=(ans+a[i]*i)%11;
          	if(c_=='X'){
          		if(ans==10)cout<<"Right";
          		else print();
          	}
          	else{
          		if(ans==c_-'0')cout<<"Right";
          		else print();
          	}
              return 0;
          }
          
          • 1

          信息

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