8 条题解

  • 2
    @ 2022-10-24 18:37:06

    只使用 char 类型能让你在这道题中变得幸运

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

    原题解:

    发个短点的吧,其实也不是特别短

    嫌定义太多变量麻烦可以用字符数组

    #include<bits/stdc++.h>
    using namespace std;
    //-'0' for char to int
    int main(){
        char a,b,c,d,e,f,g,h,i,j;
        scanf("%c-%c%c%c-%c%c%c%c%c-%c",&a,&b,&c,&d,&e,&f,&g,&h,&i,&j);
        char k=(a-'0'+2*(b-'0')+3*(c-'0')+4*(d-'0')+5*(e-'0')+6*(f-'0')+7*(g-'0')+8*(h-'0')+9*(i-'0'))%11+'0';
        if(k==':') k='X';
        if(k==j) cout<<"Right",exit(0);
        else printf("%c-%c%c%c-%c%c%c%c%c-%c",a,b,c,d,e,f,g,h,i,k);
        return 0;
    }
    
    • 1
      @ 2022-5-27 21:03:19

      简单

      #include<bits/stdc++.h>
      using namespace std;
      int q,w,e,r,t,y,u,o,p,s,d,f,g,h,j,l,z,x,c,v,n,m,i,k,a[100],b;
      string ss; 
      int main()
      {
          cin>>ss;
          k=1;
          for(i=0;i<=11;i++)
          {
          	if(ss[i]!='-')
          	{
          		a[k]=ss[i]-'0';
          		k++;
      		}
      	}	
      	for(i=1;i<=9;i++)
          	s+=i*a[i];
      	s%=11;
      	if(s==ss[12]-'0'||s==10&&ss[12]=='X')
      	cout<<"Right";
      	else 
      	{
      		for(i=0;i<=11;i++)
      		{
      			cout<<ss[i];
      		}
      		if(s!=10)
      		cout<<s;
      		else cout<<"X";
      	}
          return 0;
      }
      
      • 0
        @ 2024-1-21 10:51:15
        ISBN = input()
        mod = ['0','1','2','3','4','5','6','7','8','9','X']
        
        cb = 0
        n = 1
        for i in ISBN[:-1]:
            if i == '-':
                continue
            else:
                cb = int(i)*n + cb
                n += 1
        cb = cb%11
        if cb == 10 and ISBN[-1] == 'X':
            print('Right')
        elif ISBN[-1] == str(cb):
            print('Right')
        else:
            print(ISBN[:-1]+mod[cb])
        
        • 0
          @ 2023-10-13 22:58:16
          #include <bits/stdc++.h>
          using namespace std;
          string a;
          void print() //输出正确ISBN号
          {
              for(int i=0;i<a.size()-1;i++)
                  cout<<a[i];
          }
          int main()
          {
              cin>>a;
              int sum=0;
              int pos=0;
              for(int i=0;i<=10;i++)
                  if(a[i]!='-'){pos++;sum+=(a[i]-'0')*pos;}
              sum%=11;
              //判断ISBN识别码是否正确
              if(sum==10)
                  if(a[a.size()-1]=='X'){cout<<"Right";return 0;}
            	    else {print();cout<<'X';return 0;}
              else
              {
                  if(a[a.size()-1]-'0'==sum){cout<<"Right";return 0;}
                  else {print();cout<<sum;return 0;}
              }
              return 0;
          }
          
          • 0
            @ 2022-12-29 11:20:28

            思路是用一个字符数组装着数字,然后遍历求和、判断,最后输出。 废话不多说,上代码:

            #include<cstdio>
            using namespace std;
            char s[11]={};
            int summ=0;
            int main(){
                scanf("%c-%c%c%c-%c%c%c%c%c-%c",
                s+0,s+1,s+2,s+3,s+4,s+5,s+6,s+7,s+8,s+9);
                for(int i=0;i<9;i++){
                    summ+=(s[i]-'0')*(i+1);
                }
                if(summ%11==10){
                    if(s[9]=='X'){
                        printf("Right");
                    } else{
                        s[9]='X';
                        printf("%c-%c%c%c-%c%c%c%c%c-%c",
                s[0],s[1],s[2],s[3],s[4],s[5],s[6],s[7],s[8],s[9]);
                    }
                } else if(summ%11==s[9]-'0'){
                    printf("Right");
                } else{
                    s[9]=summ%11+'0';
                    printf("%c-%c%c%c-%c%c%c%c%c-%c",
                s[0],s[1],s[2],s[3],s[4],s[5],s[6],s[7],s[8],s[9]);
                }
                return 0;
            }
            
            • 0
              @ 2022-7-19 13:52:49
              #include<bits/stdc++.h>
              using namespace std;
              int main()
              {
              	char s[15];
              	cin>>s;
              	int sum=0;
              	int x=1;
              	for(int i=0;i<12;i++)
              	{
              		if(s[i]>='0'&&s[i]<='9')
              		{
              			sum+=(s[i]-'0')*x;
              			x++;
              		}
              	}
              	char c=sum%11+'0';
              	if(sum%11==10) c='X';
              
              	if(s[12]==c)
              		cout<<"Right";
              	else
              	{
              		s[12]=c;
              		cout<<s;
              	}
              
              	return 0;
              }
              
              • 0
                @ 2022-3-27 16:13:58

                简单的大模拟,不必费口舌

                感谢@【ICE】 的代码

                #include <iostream>
                #include <cstring>//头文件不解释
                using namespace std;
                int main()
                {
                	char s[14],c;
                	cin>>s;
                	int h=0,k=0;
                	for(int i=0;i<11;i++)
                	{
                		if(s[i]!='-')
                		{
                			k++;
                			h+=k*(s[i]-'0');//-0是为了将字符串变成普通数字
                		}
                	}
                	h%=11;
                	if(h==10) c='X';
                	else c=h+'0';
                	if(c==s[12]) cout<<"Right"<<endl;
                	else
                	{
                		s[12]=c;
                		cout<<s;
                	}
                	return 0;
                }
                
                • -1
                  @ 2022-5-18 22:14:56

                  `

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

                  信息

                  ID
                  56
                  时间
                  1000ms
                  内存
                  128MiB
                  难度
                  2
                  标签
                  递交数
                  264
                  已通过
                  98
                  上传者