📝
[個人的]AtCorder振り返りノート
この記事の目的
就活の選考時、コーディングテストなるものに遭遇することはよくあると思います。
その対策として、自習したAtCorderやHackerRankでつまずいた点をここに残します。
自分がすぐ参照しやすいように長くなってます。
入力関連
- 一行で受け取り
a = input() #一つの数字
b,c = map(int, input().split()) #複数の数字
- リストで受け取り
arr = list(map(int, input().rstrip().split()))
- 複数行をリストで受け取り
# Kはうけとる行数
input_list = [input() for i in range(K)]
出力関係
- リストを一行で出力
for i in div_array:
for j in i:
print(j ,end=" ")
print()
>>>5 6 #6、10の後にスペースが入っている
>>>9 10 #6、10の後にスペースが入っている
基本計算
- べき乗
print(10 ** 3)
# 1000
print(2 ** 0.5)
# 1.4142135623730951
print(10 ** -2)
# 0.01
print(0 ** 0)
# 1
- 割り算の整数部
print(10 // 3)
# 3
- 割り算の剰余
print(10 % 3)
# 1
その他tips
set型を用いて、重複する要素を除去する問題
狭義単調増加な整数列A=(A1,A2,…,AN),B=(B1,B2,…,BM)があります。A,Bのどちらか片方にだけ出現する整数を全て求め、昇順に出力してください。
input()
A = set(map(int, input().split()))
B = set(map(int, input().split()))
print(*sorted(A ^ B))
計算量が大きくなる数列
数列は手計算でわかっていたが、そのまま実装するとタイムアウトに…
計算量の意識をもたないといけないと反省。
公式回答例より引用
MOD = 1000000007
N, P = map(int, input().split())
ans = (P - 1) * pow(P - 2, N - 1, MOD) % MOD
print(ans)
powってなによ?
**は演算子、pow()は関数という違いあり、(当たり前?)通常の計算はおなじ。
ただ三番目の引数としてmodを指定することができる。
競プロで剰余を意識するような大きな計算の時は使えるかも。
Discussion