7-5 猜近似数字 (15分)

7-5 猜近似数字 (15分)

甲想好了一个 n 位数字让乙来猜,只要猜的数字位数正确,至多有 1 位与谜底不同,且不同的数字相差不超过 1,就算猜对了。例如谜底是 67,若乙猜 66、68、77、57,就都算对了;猜 167 就不能算对。

输入格式:

输入首先在第一行给出一个不超过 1000 位数的、最高位不是 0 的正整数,是甲给出的谜底。随后若干行,每行给出一个乙猜的数字,都是最高位不是 0 的正整数。直到出现 -1 表示输入结束,这个数字不要做任何处理。题目保证乙至少猜了一次。

输出格式:

对每一个乙猜的数字,如果猜对了就输出 Yes,否则输出 No

输入样例:

12345678909876
2345678909876
12345678900876
12345678809876
12345678909888
1234567890987
-1

输出样例:

No
No
Yes
No
No
#include<iostream>
using namespace std;
int main(void){
	string a,b;
	cin>>a;
	while(1){ 
	  cin>>b;
	  if( b=="-1")
	      return 0;
	  if( a == b ){
	      cout<<"Yes"<<endl;	
	  }
	  else if(a.length() != b.length()) {
	  	   cout<<"No"<<endl;
	  }
	  else if( a.length() == b.length()){
	  	   int cnt = 0 ,idx=0;
	  	   for( int i=0;i<a.length();i++){
	  	        if( a[i] != b[i]){
	  	            cnt++;
					idx=i;	
				}   	
		   }
		   if( cnt > 1 ){
		   	   cout<<"No"<<endl;
		   }
		   else {
		   	   int aa = a[idx]  - b[idx];
		   	   if( aa < 0 )
		   	       aa = -aa;
		   	   if(aa > 1){
		   	   	 cout<<"No"<<endl;
			   }
			   else cout<<"Yes"<<endl;
		   }
	  }
    }
	return 0;
}

 

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 程序猿惹谁了 设计师:白松林 返回首页