[白俊]231号分解合
リンク:https://www.acmicpc.net/problem/2231
質問する
に答える
1からnまでの部分とすべて探し当てました
first_n = int(input())
n = 0
flg = 0
while n < first_n:
n += 1
n_sum = n
for i in str(n):
n_sum += int(i)
if n_sum == first_n:
print(n)
flg = 1
break
if flg == 0:
print(0)
2番目の解答:バイナリ・ナビゲーションの使用
->最小価格を見つける方法を考えてみましょう
import sys
input = sys.stdin.readline
first_n = int(input())
answer = []
def binary_search(start,end,target):
if start>end:
return 0
mid = (start+end) // 2
# n : 분해합
n = mid
for i in str(mid):
n += int(i)
if target == n:
return mid
elif target > n:
return binary_search(mid, end, target)
else:
return binary_search(start, mid, target)
print(binary_search(1,first_n,first_n))
Reference
この問題について([白俊]231号分解合), 我々は、より多くの情報をここで見つけました https://velog.io/@hyesoup/백준-2231번-분해합テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol