ABC Transform
問題
D – ABC Transform
プログラミング初級者から上級者まで楽しめる、競技プログラミングコンテストサイト「AtCoder」。オンラインで毎週開催プログラミングコンテストを開催しています。競技…
記録
- 2022/3/5 リアルタイム参加。解法わからず。
解法
- (あとで書く)
コード例
#include <bits/stdc++.h> using namespace std; #include <atcoder/all> using namespace atcoder; using ll = long long; using P = pair<int, int>; #define rep(i, n) for(int i = 0; i < (n); ++i) // using mint = modint998244353; // using mint = modint1000000007; // const int mod = 1000000007; // const ll INF = 1LL << 62; // const int INF = 1001001001; ll cnt(ll n) { ll ans = 0; while(0 < n) { ans += n % 2; n /= 2; } return ans; } int main() { string S; cin >> S; vector<string> ans = {"A", "B", "C"}; vector<int> s; int n = S.size(); rep(i, n) { s.push_back(S[i] - 'A'); } int Q; cin >> Q; ll p1 = pow(2, 60); while(0 < Q) { ll t, k; cin >> t >> k; k--; ll p2 = pow(2, t); ll p = min(p1, p2); ll u = k / p; ll l = k % p; ll c = cnt(l); ll res = (s[u] + t + c) % 3; cout << ans[res] << endl; Q--; } return 0; }