「MXOI Round 1」宝箱
题目描述
小 C 喜欢在一款叫做渊深的游戏中收集宝箱。
现在,小 C 在一条数轴上,他在数轴的原点处。
同时,在这条数轴上还有两个宝箱,它们的坐标分别为 a a a 和 b b b。
只要小 C 移动到某个宝箱的位置,就认为小 C 收集到了这个宝箱。特殊地,如果小 C 初始时就在某个宝箱的位置,那么他可以直接收集到这个宝箱;如果两个宝箱在同一个位置,那么他可以同时收集这两个宝箱。
小 C 每次可以沿着这条数轴的正方向或负方向移动一个单位长度。小 C 想知道,收集到这两个宝箱至少需要移动多少次?
输入格式
两个整数 a , b a,b a,b。
输出格式
一个整数,表示小 C 收集到这两个宝箱所至少需要的移动次数。
样例 #1
样例输入 #1
1 -1
样例输出 #1
3
样例 #2
样例输入 #2
-5 0
样例输出 #2
5
样例 #3
样例输入 #3
51 -154
样例输出 #3
256
提示
【样例解释 #1】
小 C 可以先沿着数轴的负方向移动 1 1 1 次,再沿着数轴的正方向移动 2 2 2 次。
可以证明小 C 至少需要移动 3 3 3 次。
【样例解释 #2】
小 C 可以直接沿着数轴的负方向移动 5 5 5 次。
可以证明小 C 至少需要移动 5 5 5 次。
【数据范围】
对于 100 % 100\% 100% 的数据, ∣ a ∣ , ∣ b ∣ ≤ 200 \vert a\vert,\vert b\vert \le 200 ∣a∣,∣b∣≤200。
测试点编号 | 特殊性质 |
---|---|
1 ∼ 3 1\sim3 1∼3 | 保证 ∣ a ∣ , ∣ b ∣ ≤ 1 \vert a\vert,\vert b\vert \le 1 ∣a∣,∣b∣≤1 |
4 ∼ 6 4\sim6 4∼6 | 保证 a b = 0 ab=0 ab=0 |
7 ∼ 10 7\sim10 7∼10 | 无 |
C++实现
#include
#include <bits/stdc++.h>
using namespace std;
int main() {
int a,b,ans=0;
cin>>a>>b;
if(abs(a)< abs(b)){
ans=abs(a+abs(b-a));
}else{
ans=abs(b)+abs(b-a);
}
cout<<"----------------------分割线---"<<endl;
cout<<ans;
return 0;
}
后续
接下来我会不断用C++来实现信奥比赛中的算法题、GESP C++考级编程题实现、白名单赛事考题实现,感兴趣的请关注,我后续将继续分享相关内容