P9390 金盏花
· 2 min read
题意简述
有一个 位整数 ,已知它的后 位构成的整数是 。再给定一个不超过 位整数 ,求所有可能的 中 的最小值。
解题思路
若 不是 位整数(),则必定有 。要让 尽可能小,令 :。
否则 和 位数相同,考虑三种情况的最小值即可:
- 前 位相同:;
- 前 位相同,第 位大 :;
- 前 位相同,第 位小 :。
时间复杂度为 。
参考代码
#include <bits/stdc++.h>
using namespace std;
using ll=long long;
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
ll y,z;
cin>>y>>z;
if(z<100000000000)cout<<y-z+100000000000<<'\n';
else cout<<min({abs(y-z%1000000),abs(y-z%1000000+1000000),abs(y-z%1000000-1000000)})<<'\n';
return 0;
}