专栏文章

题解:P1001 A+B Problem

P1001题解参与者 9已保存评论 9

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
9 条
当前快照
1 份
快照标识符
@mipcz4r5
此快照首次捕获于
2025/12/03 09:59
3 个月前
此快照最后确认于
2025/12/03 09:59
3 个月前
查看原文
闲着没事整篇题解。
先以正常的方法完成(即使用 cincout 和加法运算符):
CPP
#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 实现)或是在原代码前面加上:
CPP
ios_base::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
补充:打回原因是不够整活,那我整点:
因为答案不超过 int 类型存储范围,来份二分枚举答案:
CPP
#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;
}
为了尊重之前的整活题解,其实还有更多的方法,找到了一份文章:
可以自行研究计算更加快速的方法。再见喵!

评论

9 条评论,欢迎与作者交流。

正在加载评论...