甲想好了一个 n 位数字让乙来猜,只要猜的数字位数正确,至多有 1 位与谜底不同,且不同的数字相差不超过 1,就算猜对了。例如谜底是 67,若乙猜 66、68、77、57,就都算对了;猜 167 就不能算对。 输入格式: 输入首先在第一行给出一个不超过 1000 位数的、最高位不是 0 的正整数,是甲给出的谜底。随后若干行,每行给出一个乙猜的数字,都是最高位不是 0 的正整数。直到出现 -1 表示输入结束,这个数字不要做任何处理。题目保证乙至少猜了一次。 输出格式: 对每一个乙猜的数字,如果猜对了就输出 Yes,否则输出 No。 输入样例: 12345678909876 输出样例: No 思路: 题意都能看懂,就是甲输入一个字符串,然后乙输入字符串与甲比对(遇到-1后输入结束),如果乙输入的字符串与甲输入的相同或者乙输入的字符串中有一位与甲不同并且不同的这一位差值不能大于1,那么就说明乙猜对了,输出Yes,其他情况输出No,代码如下。 代码: 代码1: 代码2:
2345678909876
12345678900876
12345678809876
12345678909888
1234567890987
-1
No
Yes
No
No#include<stdio.h> #include<string.h> char a[10010],b[10010]; int main() { scanf("%s",a); while(1) { int s=0,flag=0,i,x,y; getchar(); scanf("%s",b); if(b[0]=='-') break; int l1=strlen(a),l2=strlen(b); if(l1!=l2) printf("Non"); else { for(i=0;i<l1;i++) { if(a[i]!=b[i]) { s++; x=a[i]-'0'; y=b[i]-'0'; if(x-y<-1||x-y>1) flag=1; if(s>1) flag=1; } if(flag) break; } if(flag) printf("Non"); else printf("Yesn"); } } return 0; }
#include <stdio.h> #include<string.h> #include<stdlib.h> char a[10000],b[10000]; int main() { scanf("%s",a); int l=strlen(a); while(1) { scanf("%s",b); if(b[0]=='-'&&b[1]=='1') break; int l1=strlen(b); int i,k=0,flag=0,s; if(l1!=l) printf("Non"); else { for(i=0; i<l; i++) { if(b[i]==a[i]) k++; else { s=abs(a[i]-b[i]); if(s<=1) flag=1; } } if(k==l) printf("Yesn"); else if(k==l-1&&flag==1) printf("Yesn"); else printf("Non"); } } return 0; }
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算