本文主要是介绍L1-025 正整数A+B分数 15,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题的目标很简单,就是求两个正整数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:
? + ? = ?
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<iostream>
#include<sstream>
using namespace std;int main() {string A, B;int F1 = 0, F2 = 0, A_int = 0, B_int = 0;cin >> A;getchar();getline(cin, B);for (int i = 0; i < A.length(); i ++) {if (A[i] < '0' || A[i] > '9') {F1 = 1;break;} }istringstream s_A(A);s_A >> A_int;if (F1 == 1 || A_int < 1 || A_int > 1000) {F1 = 1;cout << "?";} else {cout << A_int;}cout << " + ";for (int i = 0; i < B.length(); i ++) {if (B[i] < '0' || B[i] > '9') {F2 = 1;break;}}istringstream s_B(B);s_B >> B_int;if (F2 == 1 || B_int < 1 || B_int > 1000) {F2 = 1;cout << "?";} else {cout << B_int;}cout << " = ";if (F1 == 1 || F2 == 1) {cout << "?";} else {cout << A_int + B_int;}return 0;
}
总结:
测试点还是比较难受:
测试点4:第二个输入的可能含有空格,如果直接使用cin输入,会出错
例如:
-100 123 123
//正确输出? + ? = ?
测试点5和6:针对整数的范围,1到1000,测试一下边界判断
这篇关于L1-025 正整数A+B分数 15的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!