From 64ebe809bd3e388dca04b9c5f29c9740c84a2354 Mon Sep 17 00:00:00 2001 From: Segcolt <9hmbzr275@mozmail.com> Date: Sun, 22 Sep 2024 21:12:52 -0300 Subject: [PATCH] Add another problem from past SBC that I did and now I just redone it because someone asked me to --- .../H. Harmonics with Interference.cpp | 128 ++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 2024-2025_ICPC_sub_Brazil/H. Harmonics with Interference.cpp diff --git a/2024-2025_ICPC_sub_Brazil/H. Harmonics with Interference.cpp b/2024-2025_ICPC_sub_Brazil/H. Harmonics with Interference.cpp new file mode 100644 index 0000000..0085eef --- /dev/null +++ b/2024-2025_ICPC_sub_Brazil/H. Harmonics with Interference.cpp @@ -0,0 +1,128 @@ +#include + +using namespace std; + +#define V vector + +#define rmin(a, b) a = min(a, b) +#define rmax(a, b) a = max(a, b) + +#define rep(i, lim) for (size_t i = 0; i < (lim); i++) +#define nrep(i, s, lim) for (size_t i = s; i < (lim); i++) + +#define repv(i, v) for (auto &i : (v)) +#define fillv(v) for (auto &itr_ : (v)) { cin >> itr_; } +#define sortv(v) sort(v.begin(), v.end()) +#define all(v) (v).begin(), (v).end() + +using vi = vector; +using vvi = vector; +using vvvi = vector; +using vvvvi = vector; + +using ll = long long; + +using vl = vector; +using vvl = vector; +using vvvl = vector; +using vvvvl = vector; + +template +auto operator<<(ostream &os, const vector &vec)->ostream& { + os << vec[0]; + for (size_t i = 1; i < vec.size(); i++) { + os << ' ' << vec[i]; + } + os << '\n'; + return os; +} + +template +auto operator>>(istream &is, vector &vec)->istream& { + for (auto &i : vec) { + is >> i; + } + return is; +} + +template +auto operator<<(ostream &os, const vector> &vec)->ostream& { + for (auto &i : vec) { + os << i[0]; + for (size_t j = 1; j < i.size(); j++) { + os << ' ' << i[j]; + } + os << '\n'; + } + return os; +} + +template +auto operator>>(istream &is, vector> &vec)->istream& { + for (auto &i : vec) { + for (auto &j : i) { + is >> j; + } + } + return is; +} + +int div(string &a, string &b) +{ + int div = 0; + for (size_t i = 0; i < b.size(); i++) { + div = (div << 1) + b[i] - '0'; + } + + int mod = 0; + for (size_t i = 0; i < a.size(); i++) { + mod = ((mod << 1) + a[i] - '0') % div; + } + + return mod; +} + +int main() +{ + ios::sync_with_stdio(false); + cin.tie(nullptr); + + string a, b; + cin >> a >> b; + + vi ina; + vi inb; + + for (size_t i = 0; i < a.size(); i++) { + if (a[i] == '*') { + ina.push_back(i); + } + } + for (size_t i = 0; i < b.size(); i++) { + if (b[i] == '*') { + inb.push_back(i); + } + } + + for (size_t i = 0; i < (1 << ina.size()); i++) { + if (ina.size()) { + for (size_t j = 0; j < ina.size(); j++) { + a[ina[j]] = (i >> j) & 1 ? '1' : '0'; + } + } + for (size_t j = 0; j < (1 << inb.size()); j++) { + if (inb.size()) { + for (size_t k = 0; k < inb.size(); k++) { + b[inb[k]] = (j >> k) & 1 ? '1' : '0'; + } + } + + if (!div(a, b)) { + cout << a << '\n'; + return 0; + } + } + } + + cout << "-1\n"; +}