From 332f8a5ded621651c9478ed7a74934f19fbbb3ef Mon Sep 17 00:00:00 2001 From: oleg20111511 Date: Wed, 23 Apr 2025 01:04:20 +0300 Subject: [PATCH] 2020/sector/prince solution --- 2020/sector/prince.cpp | 64 ++++++++++++++++++ .../{statement.jpg => statement_prince.jpg} | Bin 2 files changed, 64 insertions(+) create mode 100644 2020/sector/prince.cpp rename 2020/sector/{statement.jpg => statement_prince.jpg} (100%) diff --git a/2020/sector/prince.cpp b/2020/sector/prince.cpp new file mode 100644 index 0000000..814575d --- /dev/null +++ b/2020/sector/prince.cpp @@ -0,0 +1,64 @@ +#include + +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; +} diff --git a/2020/sector/statement.jpg b/2020/sector/statement_prince.jpg similarity index 100% rename from 2020/sector/statement.jpg rename to 2020/sector/statement_prince.jpg