P9390题解
思路
这道题的思路就是暴力模拟,如果
代码
#include<bits/stdc++.h>
using namespace std;
int wei(long long a)//取a的位数
{
int cnt = 0;
while(a > 0)
{
cnt++;
a /= 10;
}
return cnt;
}
long long qq(long long a, int t)//在a中取前t位
{
int as = wei(a) - t;
for(int i = 1; i <= as; i++)
{
a = a / 10;
}
return a;
}
long long qh(long long a, int t)//在a中取后t位
{
int mo = 1;
for(int i = 1; i <= t; i++)
{
mo *= 10;
}
return a % mo;
}
long long zero_num(int t)//范围10的t次方
{
int mo = 1;
for(int i = 1; i <= t; i++)
{
mo *= 10;
}
return mo;
}
int main()
{
long long y, z;
cin >> y >> z;
y = abs(y);
z = abs(z);
int wy = wei(y), wz = wei(z), wc = wz - wy;
if(wy > wz)
{
cout << (100000000000 + y) - z;
return 0;
}
long long s = qq(z, wc), x1, x2, x3;
x1 = abs((s * zero_num(wy)) + y);
x2 = abs(((s - 1) * zero_num(wy)) + y);
x3 = abs(((s + 1) * zero_num(wy)) + y);
if(wei(x1) < 12)
{
x1 = abs((100000000000 + y) - z);//补足12位
}
else
{
x1 = abs(x1 - z);
}
if(wei(x2) < 12)
{
x2 = abs((100000000000 + y) - z);//补足12位
}
else
{
x2 = abs(x2 - z);
}
if(wei(x3) < 12)
{
x3 = abs((100000000000 + y) - z);//补足12位
}
else
{
x3 = abs(x3 - z);
}
if(x1 > x2)
{
swap(x1, x2);
}
if(x2 > x3)
{
swap(x2, x3);
}
if(x1 > x2)
{
swap(x1, x2);
}
cout << x1;
return 0;
}