65 lines
1.4 KiB
C++
65 lines
1.4 KiB
C++
#include <bits/stdc++.h>
|
|
|
|
using namespace std;
|
|
|
|
|
|
ifstream in("test.in");
|
|
ofstream out("test.out");
|
|
|
|
|
|
void solveLine() {
|
|
int64_t val;
|
|
in >> val;
|
|
|
|
int digits = log10(val) + 1;
|
|
|
|
if (digits == 1) {
|
|
out << val << endl;
|
|
}
|
|
|
|
cout << "running for " << val << endl;
|
|
for (int i = 0; i < digits / 2; i++) {
|
|
// pow needs to be converted from double to int before division to avoid floating-point division bs
|
|
int64_t targetPower = pow(10, digits - i - 1);
|
|
int64_t left = val / targetPower;
|
|
left = left % 10;
|
|
|
|
targetPower = pow(10, i);
|
|
int64_t right = val / targetPower;
|
|
right = right % 10;
|
|
|
|
cout << "i: " << i << " left: " << left << " right: " << right << endl;
|
|
|
|
if (left > right) {
|
|
cout << "Adding " << (left - right) * pow(10, i) << endl;
|
|
val += (int)((left - right) * pow(10, i));
|
|
}
|
|
else if (left < right) {
|
|
cout << "Adding " << ((10 - right) + left) * pow(10, i) << endl;
|
|
val += (int)(((10 - right) + left) * pow(10, i));
|
|
}
|
|
cout << val << endl;
|
|
}
|
|
|
|
out << val << endl;
|
|
}
|
|
|
|
|
|
int main() {
|
|
if (!in) {
|
|
cerr << "Error opening file" << endl;
|
|
return 1;
|
|
}
|
|
|
|
int n;
|
|
in >> n;
|
|
|
|
cout << "n: " << n << endl;
|
|
for (int i = 0; i < n; i++) {
|
|
solveLine();
|
|
}
|
|
// solveLine();
|
|
|
|
return 0;
|
|
}
|