[アルゴリズム]白準2231号分解合
5196 ワード
白俊2231号問題へ
ある自然数Nがある場合、その自然数Nの分解とは、NとNの各ビット数の和を意味する.ある自然数Mの分解とNであれば、MはNの生成者である.
例えば、245の分解は256(=245+2+4+5)である.したがって、245は256の生成者となる.もちろん、いくつかの自然数の場合、構造関数がない可能性があります.逆に,生成者が複数ある自然数もある.
自然数Nが与えられた場合,Nの最小生成者を解くプログラムを作成する.
(コンストラクション関数がない場合は0を出力)分類:ブルートフォード(フルナビゲーション)
1から、(ジェネレータ+各ビット数の総和)を求めた後、Nに達する数字が1つ現れるとfor break 回答の提出
intをstrに変更して桁数で数字を格納させましたが、時間がかかりました...
コードを修正したいのですが. 第2回提出
質問する
ある自然数Nがある場合、その自然数Nの分解とは、NとNの各ビット数の和を意味する.ある自然数Mの分解とNであれば、MはNの生成者である.
例えば、245の分解は256(=245+2+4+5)である.したがって、245は256の生成者となる.もちろん、いくつかの自然数の場合、構造関数がない可能性があります.逆に,生成者が複数ある自然数もある.
自然数Nが与えられた場合,Nの最小生成者を解くプログラムを作成する.
(コンストラクション関数がない場合は0を出力)
1から、(ジェネレータ+各ビット数の総和)を求めた後、Nに達する数字が1つ現れるとfor break
intをstrに変更して桁数で数字を格納させましたが、時間がかかりました...
コードを修正したいのですが.
#처음 제출한 버전의 코드
n = int(input())
check = 0 #1부터 생성자 + 자릿수합을 체크하는 값
result = 0 #최종결과값
numEach = []
for i in range(1, n):
temp = str(i) #자릿수각각을 저장해놓기위해 str으로 변환
numEach = [] #각 자릿수를 저장해 놓는 어레이
for j in range(len(temp)): #str인덱스로 접근
numEach.append(int(temp[j]))
check = i + sum(numEach)
if check == n:
result = i
break
print(result)
n = int(input())
result = 0
for i in range(1, n):
eachSum = sum(map(int, str(i)))
check = i + eachSum
if check == n:
result = i
break
print(result)
Reference
この問題について([アルゴリズム]白準2231号分解合), 我々は、より多くの情報をここで見つけました https://velog.io/@martinalee94/알고리즘-백준-2231번-분해합-is34gk7bテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol