Official
C - Many Balls Editorial by blackyuki
別解を紹介します。
まず、操作を逆順に見ていきます。
\(N\) が奇数ならば魔法 \(A\) の逆操作、\(N\) が偶数ならば魔法 \(B\) の逆操作を行うということを繰り返すと、最終的に \(N\) は \(0\) になります。
ここで、魔法 \(A\) の逆操作とは \(N\) から \(1\) 引くこと、操作 \(B\) の逆操作とは \(N\) を \(2\) で割ることを意味します。
実装例(C++)
#include <bits/stdc++.h>
using namespace std;
int main(){
long long n; cin >> n;
string ans;
while(n > 0){
if(n % 2){
ans += 'A'; n--;
}
else{
ans += 'B'; n /= 2;
}
}
reverse(ans.begin(), ans.end());
cout << ans << endl;
}
posted:
last update: