AtCoder Beginner Contest 165 振り返り
参照
A問題
汚いコードですが焦ってたので許してくだちい。
k = int(input()) a,b = map(int, input().split()) i=a while i<=b: if i%k==0: print('OK') exit(0) i+=1 print('NG')
B問題
簡単なはずの複利問題。
なぜか答えが合わず解けません。
A→B(解けない)→C→B(解けない)→D(正解者数が多く解けそう)→D(解けない)
こんな感じでまさに二兎追う者は一兎をも得ず状態
ダメ。何があかんねん。
import math x = int(input()) print(math.ceil(math.log(x/100, 1.01)))
C問題
D問題より正解者が少なかったC問題。
問題を理解するのに時間がかかってしまいました。
でも解けた!!
集合A候補
まず最初にAの組み合わせを配列化します。
1≤A1≤A2...≤An≤M
とされているので、1~MからをN個の要素で構成されるタプルを作成。
タプルの先頭に1、後尾にMを追加します。
入力集合
次の配列はQ個の入力集合による配列です。
総当たりで計算
集合A候補から条件に合致する場合に、
diを合計しその最大値を求めていきます。
2≤N≤10、1≤M≤10なので、
総当たりで計算してもTLEにはならないはずです。
n,m,q = map(int,input().split()) sum_=0 import itertools A_kouho = [] for i in itertools.combinations_with_replacement(range(1, m+1), n): i = (1,) + i + (m,) A_kouho.append(i) four_r = [] for j in range(q): Q = list(map(int, input().split())) four_r.append(Q) max_ = 0 for A in A_kouho: sum_ = 0 for j in four_r: #print('%d %d'%(A[j[1]]-A[j[0]],j[2])) if A[j[1]]-A[j[0]]==j[2]: sum_+=j[3] if sum_>max_: max_=sum_ print(max_)
D問題
今まで見てきたD問題で一番解けそうと思いました。