AtCoderでの使用言語をPythonに変更
先日AtCoderでの使用言語をC++からPythonに変更しました。
Pythonは初心者であるため仕様を忘れた際に自分で参照するためのメモを作成しました。
自分用なので説明などないですが公開したいと思います。
標準入力
intで入力する場合
a.py
a=int(input())
int行列リストで取得
n, m, k=map(int, input().split())
a=list(map(int, input().split()))
# 入力
# B1 C1
# B2 C2
# ⋮
# BQ CQ
bc=[]
for _ in range(q):
a, b=map(int, input().split())
bc.append((a, b))
文字列
s=input()
標準出力
リストを空白区切りで出力
ans = [elem ^ 2 for elem in A]
print(* ans)
小数点以下桁数指定
num = 123.456
print('{:.08f}'.format(num))
# => 123.4560000
for文
# for(int i=0;i<n;i++)
for i in range(n)
# for(int i=begin; i<n; i+=step)
for i in range(begin, n, step)
文字・文字列操作
文字
# Unicodeで整数iの文字を返す
c = chr(i)
# 文字のUnicodeを返す
n = ord('a')
文字列
# s="abcde"
s=input()
# i文字目にアクセス
s[2] = 'b'
# "abbde"
# リストの反転
s = s[::-1]
# "edbba"
sort
# 昇順
p.sort()
# 降順
p.sort(reverse=True)
辞書
# 定義
cnt={}
if a not in cnt:
cnt[a]=0
論理演算子
# OR
z = x | y
# AND
z = x & y
# XOR
z = x ^ y
# NOT
z = ~x
MOD計算
nCkとnPk
MOD = 10**9 +7
LIM = 1100000
fact = [1] * LIM
invfact = [1] * LIM
for i in range(1, LIM):
fact[i] = fact[i-1] * i % MOD
invfact[1100000 -1] = pow(fact[LIM -1], MOD-2, MOD)
for i in range(LIM-1,0,1):
inv[i-1] =invfact[i] * i %MOD
# convination
def nCk(n,k):
return fact[n] * invfact[k] * invfact[n-k] %MOD
# permutation
def nPk(n,k):
return fact[n] * invfact[n-k] %MOD
冪乗計算
MOD = 10**9 +7
# x = 10**19 % MOD
x = pow(10, 19, MOD)
公倍数、公約数
# 最大公約数
gcd = math.gcd(a,b)
# 最小公倍数
lcm = a * b // gcd
Bit全探索
kajitu = ["みかん", "りんご", "ぶどう"]
kakaku = [100, 200, 300]
ans = 0
for i in range(1<<len(kajitu)):
count = 0
for j in range(len(3)):
if (i >> j) & 1:
count += kakaku[j]
ans = max(ans, count)
print(ans)
stackとqueue
stack=[1,2,3,4]
# push
stack.append(5) #stack=[1,2,3,4,5]
# pop
stack.pop() #stack=[1,2,3,4]
queue=[1,2,3,4]
# enqueue
queue.append(5) #queue=[1,2,3,4,5]
# dequeue
queue.pop(0) #queue=[2,3,4,5]