【暑期每日一题】洛谷 P9390 金盏花
题目链接:P9390 金盏花 - 洛谷
题目描述
有一个十二位十进制数 X,你只知道它的后六位构成的数是 Y。
另外再给出一个整数 Z,你需要求出所有可能的 X 中,X 与 Z 的差,即 ∣X−Z∣ 的最小值。
注意,X,Y,Z 都没有前导零(即最高位不是 0),X,Y 分别要有恰好十二位和六位。
输入格式
第一行:两个整数 Y,Z。
输出格式
第一行:一个整数表示 ∣X−Z∣ 的最小值。
输入输出样例
输入 #1
987654 123456123456
输出 #1
135802
输入 #2
428571 714285
输出 #2
99999714286
说明/提示
【样例 #1 解释】
令 X = 123455987654,可以取到 ∣X−Z∣ 的最小值 135802。
【样例 #2 解释】
令 X = 100000428571,可以取到 ∣X−Z∣ 的最小值 99999714286。
【数据范围】
对于全部数据:100000 ≤ Y ≤ 999999,0 ≤ Z ≤ 10^12。
子任务编号 | Z ≤ | 特殊限制 | 分值 |
---|---|---|---|
Subtask 1 | 0 | Y=142857 | 25 |
Subtask 2 | 0 | 无 | 25 |
Subtask 3 | 999999 | 无 | 25 |
Subtask 4 | 10^12 | 无 | 25 |
(图片来自洛谷原题)
AC code:
#include<iostream>
#include<algorithm>
#include<cmath>using namespace std;int main()
{long long y,z;cin>>y>>z;if(z <= (long long)100000000000){cout<<(long long)100000000000 + y - z<<endl;}else{long long temp = z - y;cout<<temp%1000000;}return 0;
}