5 条题解

  • 0
    @ 2025-1-1 17:13:09
    #include<iostream>
    #include<cstring>
    using namespace std;
    const int N=11;
    int f[N];
    int n;
    int main()
    {
    	f[0]=1;
    	f[1]=0;
    	f[2]=40;
    	f[3]=9;
    	f[4]=8;
    	f[5]=7;
    	f[6]=6;
    	f[7]=5;
    	f[8]=4;
    	f[9]=3;
    	f[10]=2;
    	int sum=0,p,q=0;
    	cin>>n;
    
    	while(n--)
    	{
    		q=0;
    		sum=0;
    		char ar[20];
    		cin>>ar;
    		int len=strlen(ar);
    		int b[18],sum=0;
    		for(int i=0;i<len;i++){
    		b[i]=ar[i]-'0';
    		}
    		sum+=b[0]*7+b[1]*9+b[2]*10+b[3]*5+b[4]*8+b[5]*4+b[6]*2+b[7]*1+b[8]*6+b[9]*3+b[10]*7+b[11]*9+b[12]*10+b[13]*5+b[14]*8+b[15]*4+b[16]*2;
    		p=sum%11;
    		for(int i=0;i<11;i++)
    		{
    			if(p==i&&f[i]==b[17])
    			{
    			q=1;
    			break;	
    			}
    		}
    		if(q==1)
    		{
    		cout<<"True"<<endl;
    	}else{
    		cout<<"False"<<endl;
    	}
    	}
    	return 0;
    }
    第一个错误点是‘5’-‘0’=5
    第二个是‘X’-‘0’=40,用的是ASCII
    第三个,(int)‘0’=32;
    第四个,字符不能和整数进行算术。’
    下面的思路就好想了,自己太菜了,也是看了题解才明白自己报错在哪里了
    下面的佬们用的是swith case,但实际这里用两个判断条件就能够出来👀️ 
    
    • 0
      @ 2024-11-20 16:14:42

      #include <stdio.h>

      #include <string.h>

      int main()

      {

      int n;

      scanf("%d",&n);

      while(n--){

      char ar[20];

      scanf("%s",ar);

      int len=strlen(ar);

      int b[18],sum=0;

      for(int i=0;i<len;i++){

      b[i]=ar[i]-'0';

      }

      if(b[17]==40){

      b[17]-=30;

      }

      sum+=b[0]*7+b[1]*9+b[2]*10+b[3]*5+b[4]*8+b[5]*4+b[6]*2+b[7]*1+b[8]*6+b[9]*3+b[10]*7+b[11]*9+b[12]*10+b[13]*5+b[14]*8+b[15]*4+b[16]*2;

      int ak=sum%11;

      int pd;

      if(ak==0){

      pd=1;

      }else if(ak==1){

      pd=0;

      }else if(ak==2){

      pd=10;

      }else if(ak==3){

      pd=9;

      }else if(ak==4){

      pd=8;

      }else if(ak==5){

      pd=7;

      }else if(ak==6){

      pd=6;

      }else if(ak==7){

      pd=5;

      }else if(ak==8){

      pd=4;

      }else if(ak==9){

      pd=3;

      }else if(ak==10){

      pd=2;

      }

      if(pd==b[17]){

      printf("True\n");

      }else{

      printf("False\n");

      }

      }

      return 0;

      • 0
        @ 2024-10-3 12:43:23
        #include<stdio.h>
        int DenyIDCard(char *arr){
                int weights[] = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
            char checkCodes[] = {'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'};
            int sum=0;
            for(int i=0;i<17;i++){
                int num=arr[i]-'0';//将字符转换为整形
                 sum=sum+num*weights[i];
            }
            int remindnum=sum%11;
            char lastnum=arr[17];
            return lastnum==checkCodes[remindnum];
            }
            int main(){
                int n;
                scanf("%d",&n);
                while(n--){
                    char arr[19];
                    scanf("%s",arr);
                    if(DenyIDCard(arr)){
                        printf("True\n");
                    }
                    else{
                        printf("False\n");
                    }
        
                }
                return 0;
            }
        
        
        • 0
          @ 2023-9-17 14:48:40
          #include<stdio.h>
          int main()
          {
              int n;
              scanf("%d",&n);
              char a[19];
              for(int i=0;i<n;i++)
              {
                  scanf("%s",a);
                  int q;
                  q=(a[0]-'0')*7+(a[1]-'0')*9+(a[2]-'0')*10+(a[3]-'0')*5+(a[4]-'0')*8+(a[5]-'0')*4+(a[6]-'0')*2+(a[7]-'0')*1+(a[8]-'0')*6+(a[9]-'0')*3+(a[10]-'0')*7+(a[11]-'0')*9+(a[12]-'0')*10+(a[13]-'0')*5+(a[14]-'0')*8+(a[15]-'0')*4+(a[16]-'0')*2;
                  q%=11;
                  switch(q)
                  {
                   case 0:
                
                      if(a[17]=='1')
                      printf("True\n");
                      else
                      printf("False\n");
                  break;
                  case 1:
                
                     if(a[17]=='0') 
                     printf("True\n");
                      else
                      printf("False\n");
                     break;
                
                  case 2:
                
                      if(a[17]=='X')
                      printf("True\n");
                       else
                      printf("False\n");
                      break;
                
                  case 3:
                  if(a[17]=='9')
                      printf("True\n");
                       else
                      printf("False\n");
                      break;
          
                
                  case 4:
                
                      if(a[17]=='8')
                      printf("True\n");
                       else
                      printf("False\n");
                      break;
                
                  case 5:
                
                      if(a[17]=='7')
                      printf("True\n");
                       else
                      printf("False\n");
                      break;
                
                  case 6:
                
                      if(a[17]=='6')
                      printf("True\n");
                       else
                      printf("False\n");
                      break;
                
                  case 7:
                
                      if(a[17]=='5')
                      printf("True\n");
                       else
                      printf("False\n");
                      break;
                
                  case 8:
                
                      if(a[17]=='4')
                      printf("True\n");
                       else
                      printf("False\n");
                      break;
                
                  case 9:
                
                      if(a[17]=='3')
                      printf("True\n");
                       else
                      printf("False\n");
                      break;
                
                  case 10:
                
                      if(a[17]=='2')
                      printf("True\n");
                       else
                      printf("False\n");
                      break;
                
                
              }
          }
          }
          
          • 0
            @ 2023-8-15 16:43:38

            #include<bits/stdc++.h> using namespace std; char a[20]={'1','0','X','9','8','7','6','5','4','3','2'}; int b[20]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2}; int main(){ int m,sum=0; cin>>m; char n[256]; while(m--) { cin >>n; int ans=0; for ( int i = 0 ; i < 17 ; i++ ) { ans=ans+(n[i]-'0')*b[i]; } ans%=11; if(a[ans]==n[17]) { cout << "True\n"; }else{ cout << "False\n"; } } return 0; }

            • 1

            信息

            ID
            53
            时间
            1000ms
            内存
            128MiB
            难度
            8
            标签
            递交数
            1804
            已通过
            317
            上传者