若一个正整数有 2n 个数位,后 n 个数位组成的数恰好比前 n 个数位组成的数多 2,则称这个数字“多二了一点”。如 24、6668、233235 等都是多二了一点的数字。
给定任一正整数,请你判断它有没有多二了那么一点。
输入格式:
输入在第一行中给出一个正整数 N(≤101000)。
输出格式:
在一行中根据情况输出下列之一:
- 如果输入的整数没有偶数个数位,输出
Error: X digit(s)
,其中X
是 N 的位数; - 如果是偶数位的数字,并且是多二了一点,输出
Yes: X - Y = 2
,其中X
是后一半数位组成的数,Y
是前一半数位组成的数。注意:为了让题目简单,输入保证此时Y
的个位数不大于 7。 - 如果是偶数位的数字,但并不是多二了一点,输出
No: X - Y != 2
,其中X
是后一半数位组成的数,Y
是前一半数位组成的数。
输入样例 1:
233235
输出样例 1:
Yes: 235 - 233 = 2
输入样例 2:
5678912345
输出样例 2:
No: 12345 - 56789 != 2
输入样例 3:
2331235
输出样例 3:
Error: 7 digit(s)
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
本题我用的C语言,AC代码如下:
#include <stdio.h>
#include <string.h>
int main(){
char number[1111];
gets(number);
int len=strlen(number);
if(len%2){
printf("Error: %d digit(s)",len);
}else{
if(number[len-1]-number[len/2-1]==2&&number[len-2]-number[len/2-2]==0){
printf("Yes: ");
int i;
for(i=len/2;i<len;i++) printf("%c",number[i]);
printf(" - ");
for(i=0;i<len/2;i++) printf("%c",number[i]);
printf(" = 2");
}else{
printf("No: ");
int i;
for(i=len/2;i<len;i++) printf("%c",number[i]);
printf(" - ");
for(i=0;i<len/2;i++) printf("%c",number[i]);
printf(" != 2");
}
}
return 0;
}