打卡信奥刷题(023)用Scratch图形化工具信奥P9581[普及组/提高] 「MXOI Round 1」宝箱

「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,b200

测试点编号特殊性质
1 ∼ 3 1\sim3 13保证 ∣ a ∣ , ∣ b ∣ ≤ 1 \vert a\vert,\vert b\vert \le 1 a,b1
4 ∼ 6 4\sim6 46保证 a b = 0 ab=0 ab=0
7 ∼ 10 7\sim10 710

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++考级编程题实现、白名单赛事考题实现,感兴趣的请关注,我后续将继续分享相关内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值