AtCoder Beginner Contest 144 / Python
● 初学者です。( 2019 / 9 ~ 現在3ヵ月目 )
● AtCoder の問題に Python で取り組んでいます。
● ABC で4問目(茶か緑)まで解けることを目標にしています。
完全に独学なのでコードは酷いと思います。
AtCoder やってる方、お気軽にコメントくださいませ。
a,b = map(int,input().split())
if a <= 9 and b <= 9:
print(a*b)
else:
print(-1)
n = int(input())
for i in range(9):
p,q = divmod(n,9-i)
if p <= 9 and q == 0:
print("Yes")
break
else:
print("No")
メモ:divmod を使わない
n = int(input())
for i in range(9):
if n /(9-i) <= 9 and n % (9-i) == 0:
print("Yes")
break
else:
print("No")
メモ:ループを逆順で回す
n = int(input())
for i in reversed(range(1,10)):
if n / i <= 9 and n % i == 0:
print("Yes")
break
else:
print("No")
import math
n = int(input())
m = math.floor(math.sqrt(n))
for i in range(m):
p,q = divmod(n,m-i)
if q == 0:
print((m-i) + p - 2)
break
メモ:math なんて使う必要なかった
m = math.floor(math.sqrt(n))
m = int(n**0.5)
メモ:ループを逆順で回す
n = int(input())
m = int(n**0.5)
for i in reversed(range(m+1)):
p,q = divmod(n,i)
if q == 0:
print(i + p - 2)
break
メモ:余計っぽいものを全部カット
n = int(input())
for i in reversed(range(int(n**0.5)+1)):
if n % i == 0:
print(i + n//i - 2)
break
約数を求めて真ん中の2つを取ろうと思ったが、
AtCoder では Sympy が使えないらしい。
メモ:約数の列挙
n = int(input())
d = []
for i in range(1,int(n**0.5) + 1):
if n % i == 0:
d.append(i)
if i != n//i:
d.append(n//i)
print(sorted(d))
メモ:sympy を使っても良いなら
import sympy
print(sympy.divisors(int(input())))
しかし英語圏の人は divisors とか単語を覚えなくて良いから羨ましい。
こんな単語知らん、でも英語圏では小学校の算数で習う単語なんだろうな。
import math
a,b,x = map(int,input().split())
if x/a >= b*a/2:
y = 2*(b - x / (a*a))
print(math.degrees(math.atan(y/a)))
else:
y = 2*x / (a*b)
print(math.degrees(math.atan(b/y)))
数学部分でミスして手間取ったから疲れた、コードはこんなもんでしょう。
わからん。
メモ:要「二分探索」
無理。
メモ:要「動的計画法」
マガジン:他の回もやっていきます。
いつもありがとうございます(´っ・ω・)っ サポートから決済手数料(クレカ5%、ケータイ15%) & プラットフォーム利用料10%が引かれてしまいます、 予めご了承ください(´;ω;`)。 残りは僕のご飯になります。ベリベリありがとうございます。