题解 P6581 【远大目标】

· · 题解

这题很简单,尤其是数据范围给我们的提示。

首先,我们知道 int 显然存不了 2^{63}-1 量级的数据,所以我们考虑 long long,而 long long 在乘以 2 的时候会爆掉,所以我们要用 unsigned long long

但是,由于 unsigned long long 存不了负数,所以我们先用 long long 读入,转存 unsigned long long 最后输出,这样就可以了。

同时,如果是非正数的情况,直接输出 0 就可以了。

代码如下:

#include <iostream>
using namespace std;
int main()
{
    long long a;
    cin >> a;
    if(a <= 0) { cout << 0; return 0; }
    unsigned long long b = a;
    cout << 2 * b - 1;
    return 0;
}