2020/sector/prince solution
This commit is contained in:
64
2020/sector/prince.cpp
Normal file
64
2020/sector/prince.cpp
Normal file
@@ -0,0 +1,64 @@
|
||||
#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;
|
||||
}
|
||||
Reference in New Issue
Block a user