pat b 1031 查驗身份證

注意:gets可以讀回車

我沒有檢查前17位是否全是數字,也通過了。但要是有用心險惡的情況,也不一定……

#include<cstring>
#include<cstdio>
int main(){
	int n=0,z=0,flag=true;
	char str[19]={},M[12]={'1','0','X','9','8','7','6','5','4','3','2'};
	int qual[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
	scanf("%d",&n);
	while(n>0){
	  scanf("%s",str);
	  int a=0;
	  for(int i=0;i<17;i++){
	  	a=(str[i]-'0')*qual[i]+a;
	  }
	  if(M[a%11]!=str[17]){
	  	puts(str);
	  	flag=false;
	  }
	  n--;	
	}
	if(flag){
		puts("All passed");
	}
	return 0;
} 

//這是加上的,雖然出樣例的應該沒那麼陰毒……
#include<cstring>
#include<cstdio>
int main(){
	int n=0,z=0,flag=true;
	char str[19]={},M[12]={'1','0','X','9','8','7','6','5','4','3','2'};
	int qual[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
	scanf("%d",&n);
	while(n>0){
	  scanf("%s",str);
	  int a=0,i=0;
	  for(i=0;i<17;i++){
	  	if(!(str[i]>='0'&&str[i]<='9'))break;
	  	a=(str[i]-'0')*qual[i]+a;
	  }
	  if(i<17){
	  	flag=false;
	  	puts(str);
	  }else{
	  if(M[a%11]!=str[17]){
	  	puts(str);
	  	flag=false;
	  }}
	  n--;	
	}
	if(flag){
		puts("All passed");
	}
	return 0;
} 
csdn的編輯器真噁心

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章