打卡信奥刷题(015)用C++信奥P9390[普及组/提高] 金盏花

金盏花

题目描述

有一个十二位十进制数 X X X,你只知道它的后六位构成的数是 Y Y Y

另外再给出一个整数 Z Z Z,你需要求出所有可能的 X X X 中, X X X Z Z Z 的差,即 ∣ X − Z ∣ \lvert X - Z \rvert XZ 的最小值。

注意, X , Y , Z X,Y,Z X,Y,Z 都没有前导零(即最高位不是 0 0 0), X , Y X,Y X,Y 分别要有恰好十二位和六位。

输入格式

第一行:两个整数 Y , Z Y,Z Y,Z

输出格式

第一行:一个整数表示 ∣ X − Z ∣ \lvert X - Z \rvert XZ 的最小值。

样例 #1

样例输入 #1

987654 123456123456

样例输出 #1

135802

样例 #2

样例输入 #2

428571 714285

样例输出 #2

99999714286

提示

【样例 #1 解释】

X = 123455987654 X=123455987654 X=123455987654,可以取到 ∣ X − Z ∣ \lvert X - Z \rvert XZ 的最小值 135802 135802 135802


【样例 #2 解释】

X = 100000428571 X=100000428571 X=100000428571,可以取到 ∣ X − Z ∣ \lvert X - Z \rvert XZ 的最小值 99999714286 99999714286 99999714286


【数据范围】

对于全部数据: 100000 ≤ Y ≤ 999999 100000\leq Y\leq 999999 100000Y999999 0 ≤ Z ≤ 1 0 12 0\leq Z\leq 10^{12} 0Z1012

子任务编号 Z ≤ Z\leq Z特殊限制分值
Subtask 1 \text{Subtask 1} Subtask 1 0 0 0 Y = 142857 Y=142857 Y=142857 25 25 25
Subtask 2 \text{Subtask 2} Subtask 2 0 0 0 25 25 25
Subtask 3 \text{Subtask 3} Subtask 3 999999 999999 999999 25 25 25
Subtask 4 \text{Subtask 4} Subtask 4 1 0 12 10^{12} 1012 25 25 25

C++实现

#include
using namespace std;
int main()
{
cin>>y>>z;
if(z<100000000000)
{
cout<<100000000000+y-z<<endl;
}
else
{
cout<<min(abs(y-z%1000000),min(abs(y+1000000-z%1000000),abs(y-1000000-z%1000000)))<<endl;
}
return 0;
}

在这里插入图片描述

后续

接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,感兴趣的请关注,我后续将继续分享相关内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值