专栏文章
P1001 A+B Problem 题解
P1001题解参与者 30已保存评论 30
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 30 条
- 当前快照
- 1 份
- 快照标识符
- @mipcycmj
- 此快照首次捕获于
- 2025/12/03 09:58 3 个月前
- 此快照最后确认于
- 2025/12/03 09:58 3 个月前
你好啊,欢迎进入编程的世界!接下来你要迎接的挑战是:进入编程世界的关键一招, 问题!
如果你通过了这个问题,那么你就彻底打开了通往新世界的大门!那让我们开始吧!
C++
我想了一下,传统的 还是太吃操作了,我们有没有什么更有趣的算法来解决呢,有的兄弟有的,我这边推荐二分,二分是一个很有用的算法,在红题到黑题你都能看到他的身影!
我们假设 为我们当前二分的值, 为我们目前已经锁定的左右边界。
每次二分开始的时候,我们将 设为 的平均值,也就是 ,在本题因为没有小数,所以我们可以向下取整。
如果 ,那么说明 大了,这个时候我们把右边界 设为 就好了。
如果 ,那么说明 小了,这个时候我们把左边界 设为 就好了。
如果 ,那么恭喜你,你找到了答案!这个时候我们输出这个 就可以了!
我们可以使用
while 循环来重复这个过程,直到我们找到答案。由于过程中可能会爆
int,所以我们需要可以储存更大整数变量的类型:long long!附上一份代码,如果想要真正踏入编程的世界,那么是不可以复制别人的代码提交的,需要你亲手打出来,体验编程之美!
CPP#include<iostream>
using namespace std;
long long a,b;
int main(){
long long l=-2e9,r=2e9,mid;
cin>>a>>b;
while(l<=r){
mid=(l+r)>>1;
if(a+b==mid){
cout<<mid;
break;
}
else if(a+b<mid){
r=mid-1;
}
else if(a+b>mid){
l=mid+1;
}
}
return 0;
}
如果你通过了这道题,那么恭喜你,你现在可以挑战所有带有二分标签的题目了,让我们继续加油吧!
python
同时附上一篇 python 题解。
由于 python 中的
input 会读入一行的字符串,所以这里我们使用 split 来将这个字符串分割成两个正整数。split 可以将一个字符串函数默认按照空格将字符串分割并返回一个列表。在
PYTHONsplit 结束之后, 列表中存储的是两个字符串,但是我们需要两个整型变量进行加减,所以需要使用 int(s[0])。s=input().split()
print(int(s[0])+int(s[1]))
相关推荐
评论
共 30 条评论,欢迎与作者交流。
正在加载评论...