题解:P9390 金盏花

· · 题解

解题思路

分类讨论:

  1. 如果 Z 不是十二位数(Z<10^{12}),要使 X 尽可能小,即 \overline{100000Y}\lvert X-Z\rvert=10^{12}+Y-Z

  2. 否则,XZ 位数相同,取三种情况的最小值即可:

参考代码

#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<<100000000000+y-z<<'\n';
    }
    else
    {
        cout<<min(abs(y-z%1000000),min(abs(y+1000000-z%1000000),abs(y-1000000-z%1000000)))<<'\n';
    }
    return 0;
}