1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Atcoder ABC165 A-DをPythonで

Last updated at Posted at 2020-05-02

開始が10分遅れるトラブル。

#A. We Love Golf
aからbの値を全探索して、kで割り切れればOK

ABC165a.py
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で切り捨てるのを忘れずに。

ABC165b.py
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を使って想定される数列を全て作成し、得点の最大値を出力します。

ABC165c.py
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)$を以下に示します。
ABC165.JPG

よって、$n>=B$の時は$x=b-1$、$n<B$の時は$x=n$として$f(x)$を出力すればよいです。

ABC165d.py
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とか探索アルゴリズムとか、勉強したものを早く実践で使いたい。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?