[5問]完全探索問題01
完全プローブタイプは、すべての場合に試行されるタイプです.与えられた問題の要求を実現できる能力が重要であるようだ.
n,kの値が得られ,
nが9(3 x 3)の場合,方法の個数は1である.
nが12(3 x 4)の場合,方法の個数は3である.
nが15(3 x 5)の場合,方法の個数は6である.
nが18(3 x 6)の場合,方法の個数は10である.
1は1,3は1+2,6は1+2+3,10は1+2+3+4であるため,この規則性を一般化し,
第3章でa,b,cと呼ぶと,すべての場合の数字が計算され,M未満の値で最も値が出力される.
問題の要求条件に従って体現した.二つの方法で解いた.1つの方法は
後の解題方法は思いもよらなかったので、学ぶことができます.Pythonを有効に使っているような気がします.確かに、
同様に問題が要求する条件を体現している.結果はすべての状況を探る問題だが、7人の矮人を探すのではなく、2人の矮人ではない矮人を見つけることだ.
这是白骏2501号。
ソリューション
n,kの値が得られ,
for
ゲートをnに変換し,1〜nの数をnで割った動作を行った.残りが0の場合、nの約数であり、リストに個別に列挙される.次に、k番目の小さい約数をリストに出力するために、インデックスはk-1
(インデックスは0から始まるため)であり、リスト要素が抽出される.私が書いたコード
n, k = map(int,input().split(' '))
lst =[]
for i in range(1,n+1):
if n % i == 0:
lst.append(i)
if len(lst) < k:
print(0)
else:
print(lst[k-1])
这是白峻16561号。
ソリューション
nが9(3 x 3)の場合,方法の個数は1である.
nが12(3 x 4)の場合,方法の個数は3である.
nが15(3 x 5)の場合,方法の個数は6である.
nが18(3 x 6)の場合,方法の個数は10である.
1は1,3は1+2,6は1+2+3,10は1+2+3+4であるため,この規則性を一般化し,
n // 3
をkと呼ぶ場合,方法の個数は(k-2)*(k-3)/2
である.私が書いたコード
n = int(input()) // 3
result = int((n-1)*(n-2)/2)
print(result)
我是白俊2798号。
ソリューション
第3章でa,b,cと呼ぶと,すべての場合の数字が計算され,M未満の値で最も値が出力される.
私が書いたコード
import sys
n, m = map(int,sys.stdin.readline().split(' '))
cards = list(map(int,sys.stdin.readline().split(' ')))
result = []
for a in range(0,n-2):
for b in range(a+1, n-1):
for c in range(b+1, n):
sum_cards = cards[a] + cards[b] + cards[c]
if sum_cards <= m:
result.append(sum_cards)
print(max(result))
白俊2231号。
ソリューション
問題の要求条件に従って体現した.二つの方法で解いた.1つの方法は
for
文で解決され、もう1つの方法は、各ビット数の和をリストにすることである.後の解題方法は思いもよらなかったので、学ぶことができます.Pythonを有効に使っているような気がします.確かに、
for
ゲートよりも時間と長さを短縮する効率的なコードです.私が作成したコード-方法1
number = input()
for i in range(1,int(number)+1):
each_num_sum = 0
i = str(i)
for j in range(len(i)):
each_num_sum += int(i[j])
div_sum = int(i) + each_num_sum
if div_sum == int(number):
print(int(i))
break
elif int(i) == int(number):
print(0)
私が書いたコード-方法2
number = int(input())
result = 0
for i in range(1, number+1):
each_num_lst= list(map(int, str(i))) # 각 자리 수를 리스트에 담는다.
div_num = i + sum(each_num_lst)
if div_num == number:
print(i)
break
if i == number:
print(0)
我是白俊2309号。
ソリューション
同様に問題が要求する条件を体現している.結果はすべての状況を探る問題だが、7人の矮人を探すのではなく、2人の矮人ではない矮人を見つけることだ.
私が書いたコード
dwarf = [int(input()) for _ in range(9)]
not_dwarf1, not_dwarf2 = 0,0
first_break = True
for i in range(9):
if first_break == False:
break
for j in range(1,8):
not_dwarf = dwarf[i]+dwarf[j]
if sum(dwarf) - not_dwarf == 100:
not_dwarf1 = dwarf[i]
not_dwarf2 = dwarf[j]
first_break = False
break
dwarf.remove(not_dwarf1)
dwarf.remove(not_dwarf2)
dwarf = sorted(dwarf)
print('\n'.join(map(str,dwarf)))
Reference
この問題について([5問]完全探索問題01), 我々は、より多くの情報をここで見つけました https://velog.io/@m1njae/5문제-완전-탐색-문제풀이-01テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol