6 条题解

  • 2
    @ 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
      @ 2025-10-29 19:49:39
      #include <stdio.h>
      int main(){
          int n,m;
          char a[20];
          scanf("%d",&n);
          while(n--){
              scanf("%s",a);
              m=(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;
              m=m%11;
              if(m==0)m=1;
              else if(m==1)m=0;
              else if(m==2)m=40;
              else if(m==3)m=9;
              else if(m==4)m=8;
              else if(m==5)m=7;
              else if(m==6)m=6;
              else if(m==7)m=5;
              else if(m==8)m=4;
              else if(m==9)m=3;
              else if(m==10)m=2;
              if(a[17]-'0'==m)printf("True\n");
              else printf("False\n");
          }
      }
      
      • 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
          @ 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
              @ 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,但实际这里用两个判断条件就能够出来👀️ 
              
              • 1

              信息

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