🙄
ABC372 B - 3^Aを理解し忘れないようにする。
問題概要
正整数
自分で考えた方針
NはMaxで20なので、1...10を20回ネストしながらループを回せば良さそうだが可読性が悪い。
しかも、計算量は
vector<int> ans
for(a1 = 0...10) {
for(a2 = 0...10) {
for(a3 = 0..10) {
20回やる
if (3^a1 + 3^a2 + 3^a3 + .... 3^a20 == M) {
ansにa1~a20を格納
解説見た
解法1 貪欲法
- 貪欲法を使う。Mから
の可能な限り大きい値を引いて、その後3^{Ai} を配列で管理して出力Ai
参考
- 解説放送
貪欲法とは、計算量削減のために後先のことを考えず、その場その場での最善の選択を繰り返していく 考え方のこと
Discussion