牛客小白月赛23E——A+B问题
A+B问题
https://ac.nowcoder.com/acm/contest/4784/E
网址:https://ac.nowcoder.com/acm/contest/4784/E
题目描述
经典的A+B问题描述如下:
从标准输入流输入两个整数 {A}A 和 {B}B,请你求出这两个数字的和。其中 {A}A 和 {B}B 都在32位有符号整数能存储的范围内。
下面是一份AC代码:
#include < iostream >
using namespace std;
int main()
{
int a, b;
cin >> a >> b;
cout << a+b;
return 0;
}
现在已知这个程序输出的结果是 {c}c,请问有多少种可能的输入数据?
输入描述:
一行,仅包含一个整数 {c}c ,这个整数的值在32位有符号整数的存储范围内。
输出描述:
一个数,表示可能的输入数据的情况数
输入
1
输出
4294967296
说明
以下输入数据都可以让该程序输出1
1 0
2 -1
-5 6
0 1
-2147483647 -2147483648
想要使上述程序输出1,总共有4294967296种可能的输入
题解:
这道题比较坑,起初还以为需要求出maxn_int+b=c,或者minn_int+b=c,然后这个b就是临界值。
结果样例都过不了,再仔细一看,这道题考到了溢出的情况
那么对于任何一个有符号的32位的数,假设一个32位的a,一定会有一个b于其对应
AC代码:
#include<iostream> using namespace std; int main(){ int c; cin>>c; cout<<4294967296; return 0; }