LoginSignup
0
1

More than 3 years have passed since last update.

Atcoder のA問題をn=20問といてみた[#2]

Posted at

内容

_#1の続き。abc_a問題を解いてない100問ぐらいを対象に順番に解いていく。

実験の待ち時間にちょこちょこやっていたのだが、案外時間がないことを意識して余計なことを考えずにやると意外に進んだ。(前回は記事書きながらやったから時間がかかった面は否定できないが)

同じような問題が続き、流石に飽きてきたので、shortest codeを意識して(結局1つも取れなかったけど)遊びながら書いていた。

AtCoderProblemのスクショを載せておきます。

これをみると登録から全然精進してないのがわかりますね。。
スクリーンショット 2019-08-06 22.20.02.png

簡単に各問題の感想を(少し抜けてますが)書いていきます。

abc022_a.py

abc025_a.py

文字列順に出力する。
5で割ったあまりと5で割った商を出力する

n-1で割った時の値にしないとダメね。

abc026_a.py

x+y=Aとなるx、yのうち、x*yが最大となるもののxyを求める。
x(a-x)を微分すると、a/2で極大値をとる。
aは偶数という制約があるのでa/2**2を出力すれば良い。

abc029_a.py

末尾に"s"をつける。input()+"s"でいい。

abc030_a.py

2つの割り算の大きさの比較

a.py
a,b,c,d = map(int,input().split())
if b/a > d/c :
  print('TAKAHASHI')
elif b/a == d/c:
  print('DRAW')
else:
  print('AOKI')

abc031_a.py

2つの積の大きさ比較

a.py
a,d= map(int,input().split())
if a <= d:
  print((a+1)*d)
else:
  print(a*(d+1))

abc032_a.py

n 以上で最小のa,bの公倍数
再起を使う問題は出ないだろうと思ったので、ループを回しました。

a.py
a = int(input())
b = int(input())
n = int(input())
for i in range(n,n+a*b):
  if i %a == 0 and i%b == 0:
    print(i)
    break

a,b,n=[int(input())for _ in'___']
で複数行の入力を受け取れるんですね。
答えを変数に保管しておく方が綺麗なコードっぽいですね。

abc034_a.py

比較してifぶん

abc035_a.py

同じ。比較してif文
同じような問題が続くのは時ごとにテーマがあるのかな?

abc036_a.py

末尾が”T"かどうかを判定する。

abc043_a.py

1+2+..+nを出力する。階差数列懐かしい。
n = int(input());print((n+1)*n//2)

感想

なかなか、時間を置いてから解説を書こうと思うと難しい。
短いコードを書くには、eval や"YNEOS"を使うなどの凝った工夫をしないと難しい。
ただ、色々発見があって楽しいので、shortest codeを取れないにしても、飽きがきている人にはいいかも。

0
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
0
1