非負の整数n
と整数が与えられp >= 2
ます。を取得するには、いくつかのp
累乗(p=2
正方形をp=3
意味し、立方体を意味する)を一緒に追加する必要がありますn
。これは常に非負n
ではありませんが、必要なp
(正の整数の)べき乗の多くはわかりません。
これがあなたの仕事です。p
合計することができる最小のべき乗の数を見つけますn
。
例
>>> min_powers(7, 2)
4 # you need at least four squares to add to 7
# Example: (2)^2 + (1)^2 + (1)^2 + (1)^2 = 4 + 1 + 1 + 1 = 7
>>> min_powers(4, 2)
1 # you need at least one square to add to 4
# Example: (2)^2 = 4
>>> min_powers(7, 3)
7 # you need at least seven cubes to add to 7
# Example: 7*(1)^3 = 7
>>> min_powers(23, 3)
9 # you need at least nine cubes to add to 23
# Example: 2*(2)^3 + 7*(1)^2 = 2*8 + 7*1 = 23
この問題に関するWikipediaの関連記事、Waringの問題。
ルール
コードはプログラムまたは関数でなければなりません。
入力は二つの整数である
n
とp
任意の順序で。すべての入力が有効であると仮定できます(n
正の整数、p >= 2
出力は、合計するのに必要な累乗の数を表す整数
n
です。これはコードゴルフなので、最短のプログラムが勝ちます。必ずしも最も効率的ではありません。
すべてのビルトインが許可されます。
いつものように、問題が不明な場合はお知らせください。幸運と良いゴルフ!