5 条题解

  • 1
    @ 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-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
          @ 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
            标签
            递交数
            1817
            已通过
            323
            上传者