题的目标很简单,就是求两个正整数A
和B
的和,其中A
和B
都在区间[1,1000]。稍微有点麻烦的是,输入并不保证是两个正整数。
输入格式:
输入在一行给出A
和B
,其间以空格分开。问题是A
和B
不一定是满足要求的正整数,有时候可能是超出范围的数字、负数、带小数点的实数、甚至是一堆乱码。
注意:我们把输入中出现的第1个空格认为是A
和B
的分隔。题目保证至少存在一个空格,并且B
不是一个空字符串。
输出格式:
如果输入的确是两个正整数,则按格式A + B = 和
输出。如果某个输入不合要求,则在相应位置输出?
,显然此时和也是?
。
输入样例1:
123 456
输出样例1:
123 + 456 = 579
输入样例2:
22. 18
输出样例2:
? + 18 = ?
输入样例3:
-100 blabla bla...33
输出样例3:
? + ? = ?
补充样例:
5 10 2??52
1001 5
#include<stdio.h>
#include<string.h>
long long measure(long long x,long long y){
long long z=y;
while(x%y!=0){
z=x%y;
x=y;
y=z;
}
return z;
}
int main(){
char m[10001],n[10001];
scanf("%s",&m);
getchar();
gets(n);
int x=0,y=0,p=0,q=0;
int str1=strlen(m);
if((str1>1000) || (m[0]=='0'))
p=1;
for(int i=0;i<str1;i++){
if(!(m[i]>='0' && m[i]<='9')){
p=1;
break;
}
x=x*10+(m[i]-'0');
}
if(x>1000){
p=1;
}
int str2=strlen(n);
if(str2>1000 || (n[0]=='0'))
q=1;
for(int i=0;i<str2;i++){
if(!(n[i]>='0' && n[i]<='9')){
q=1;
break;
}
y=y*10+(n[i]-'0');
}
if(y>1000){
q=1;
}
if(p==1){
printf("? + ");
}
else{
printf("%d + ",x);
}
if(q==1){
printf("? = ");
}
else{
printf("%d = ",y);
}
if(q==1 || p==1){
printf("?");
}
else{
printf("%d\n",x+y);
}
return 0;
}