5 条题解
-
0
#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
#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
#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
#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
#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
- 上传者