開始が10分遅れるトラブル。
#A. We Love Golf
aからbの値を全探索して、kで割り切れればOK
a=int(input())
b,c=map(int,input().split())
for i in range(b,c+1):
if i%a==0:
print("OK")
exit()
print("NG")
#B. 1%
複利を含めた合計額がx円を超えるまでwhile文を回す。毎回floorで切り捨てるのを忘れずに。
import math
x=int(input())
y=100
i=0
while True:
y=math.floor(y*1.01)
i+=1
if y>=x:
print(i)
exit()
#C. Many Requirements
得られるポイントの上から取っていくのかなとかa,bの重複を削除するのかなとか色々考えてたら時間を大幅にロスした。$N, M, Q$ともに小さいので、想定される数列を全探索しても十分間に合います。
Itertoolsのcombinations_with_replacementを使って想定される数列を全て作成し、得点の最大値を出力します。
from itertools import *
n,m,q=map(int,input().split())
aaa=[]
for i in range(m):
aaa.append(i+1)
l=[]
for i in range(q):
a=list(map(int,input().split()))
l.append(a)
a=list(combinations_with_replacement(aaa,n))
ans=0
for i in a:
aa=0
for j in l:
if i[j[1]-1]-i[j[0]-1]==j[2]:
aa+=j[3]
if aa>ans:
ans=aa
print(ans)
#D. Floor function
第二項は$x<B$の時$0$、それ以外の時は正の整数になります。よって$x$$\equiv$$B-1 (modB)$の時$f(x)$は最大になり、その関数は矩形波になります。例として$a=100, b=20$としたときの$f(x)$を以下に示します。
よって、$n>=B$の時は$x=b-1$、$n<B$の時は$x=n$として$f(x)$を出力すればよいです。
import math
a,b,n=map(int,input().split())
if b<=n:
print(math.floor(a*(b-1)/b))
else:
print(math.floor(a*(n)/b))
今日もD問題までで時間を使い果たしてしまった・・DPとか探索アルゴリズムとか、勉強したものを早く実践で使いたい。