题解:P1001 A+B Problem

· · 题解

闲着没事整篇题解。

先以正常的方法完成(即使用 cincout 和加法运算符):

#include <bits/stdc++.h>
#define int long long 

using namespace std;

int a,b;

signed main()
{
    cin>>a>>b;
    cout<<a+b<<endl;
    return 0;
}

顺便讲一下关于 define 的知识。说简介一点就是将 define A B 后代码中所有 A 都替换为 B 然后没了。例如 #define int long long 就是将代码中所有 int 换为 long long 类型,因为有时候数据较大会导致 int 存不下所以通常使用 long long 类型存储整数。注意打主函数是是 int main() 所以使用这句话时应将主函数改为 signed main() 就可以了。

然后注意 return 0; 是好习惯。

当然,为了使代码拥有更快的效率,我们可以格式化输入输出(也就是 scanfprintf 实现)或是在原代码前面加上:

ios_base::sync_with_stdio(0);
cin.tie(0);cout.tie(0);

补充:打回原因是不够整活,那我整点:

因为答案不超过 int 类型存储范围,来份二分枚举答案:

#include <bits/stdc++.h>
#define int long long

using namespace std;

int a,b,ans;

bool check(int x)
{
    return x<(a+b);
}

signed main()
{
    cin>>a>>b;
    int l=INT_MIN,r=INT_MAX;
    while(l<r)
    {
        int mid=(l+r)>>1;
        if(mid==a+b)
        {
            ans=mid;
            break;
        }
        if(check(mid)) l=mid;
        else r=mid;
    }
    cout<<ans<<endl;
    return 0;
}

为了尊重之前的整活题解,其实还有更多的方法,找到了一份文章:

https://blog.csdn.net/2201_75605164/article/details/133951800。

可以自行研究计算更加快速的方法。再见喵!