分解結合(2231)
Brute Force
質問する
ある自然数Nがある場合、その自然数Nの分解とは、NとNの各ビット数の和を意味する.ある自然数Mの分解とNであれば、MはNの生成者である.例えば、245の分解は256(=245+2+4+5)である.したがって、245は256の生成者となる.もちろん、いくつかの自然数の場合、構造関数がない可能性があります.逆に,生成者が複数ある自然数もある.
自然数Nが与えられた場合,Nの最小生成者を解くプログラムを作成する.
入力
第1行は自然数N(1≦N≦1000000)を与える.
しゅつりょく
最初の行に答えを印刷します.ジェネレータがない場合は0を出力します.
import sys
N = int(sys.stdin.readline())
start = 0
answer = 0
while start < N:
check = start
a = list(map(int, str(start)))
check += sum(a)
if (check == N):
answer = start
break;
start += 1
print(answer)
数値=>文字列=>各ビット数を要素とする配列->配列の値を加算(繰り返し文よりsum()で処理する方が時間効率が良い)Reference
この問題について(分解結合(2231)), 我々は、より多くの情報をここで見つけました https://velog.io/@skkfea07/백준-분해합2231テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol