AcWing 537. 偶数
原题链接
简单
作者:
城府_7
,
2019-05-21 15:19:05
,
所有人可见
,
阅读 893
C++ 代码
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<string>
#include<vector>
#pragma warning(disable:4996)
using namespace std;
const int maxn = 1005;
typedef long long ll;
ll n;
vector<int>num;
int main() {
int t;
scanf("%d", &t);
int cas = 1;
while (t--) {
scanf("%lld", &n);
num.clear();
ll x = n;
while (x) {
num.push_back(x % 10);
x /= 10;
}
ll l = 0, r = 0;
ll res = 0;
for (int i = num.size() - 1; i >= 0; i--) {
int u = num[i];
if (u % 2 == 0) {
l = l * 10 + u;
r = r * 10 + u;
}
else {
l = l * 10 + u - 1;
for (int j = i - 1; j >= 0; j--) {
l = l * 10+8;
}
res = n - l;
if (u != 9) {
r = r * 10 + u + 1;
for (int j = i - 1; j >= 0; j--) {
r = r * 10;
}
if (res > r - n) {
res = r - n;
}
}
break;
}
}
printf("Case #%d: %lld\n", cas++, res);
}
return 0;
}