6 条题解

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