1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

競プロをPythonでやるときのチートシート

Last updated at Posted at 2024-10-11

競プロをPythonでやるときのチートシート

競プロをpythonでやるときのチートシートです
標準入力などよく使うものをまとめてみました
ジャンルでまとめてあります

標準入力

複数行はリスト内包表記かfor分で書くと良いです
スニペットにまとめとくと便利です

文字列一つ

標準入力の基本のき

input()

文字列が一行に複数

あまり使いません
文字列は複数行が多いと思います(灰色の感想)

input().split()

整数一つ

int(input())

整数が一行に複数

list(map(int,input().split()))

出力

入力の次に大事?

リストを空白区切りで出力

print(*A)

これだけです区切り文字を付けたい場合は引数にsepを追加します
改行区切りの例

print(*A,sep="\n")

数学系

1からnまでの総和

なんやかんや使います
愚直に計算する場合は$O(n)$ですが
この公式は$O(1)$です
そろそろ急かす声が出てくるとこなので公式を出します

\displaylines{
\frac{1}{2} \
n(n+1)
}

実装

int(n/2*(n+1))

$x$から$y$までの総和は
1から$y$までの総和-1から$x$までの総和です
簡単でしょ

ルート

i ** 0.5

これだけmath.sqrtを使う方法があるけどこっちのほうが楽

繰り返し二乗法

べき乗の$a^b$のbが30を超えるときに使用します
普通に使っても全然いいです
$O(log n)$なので$10^18$超えても60回しか計算しません
テンプレとして関数を用意しておきます
引数の$t$はmodを取る場合に使用します

def pow(x,n,t=1):
    if t == 1:
    
        ans = 1
        while n:
            if n%2:
                ans = (ans*x)
            x=(x*x)
            n>>=1
        return ans 
    ans = 1
    while n:
        if n%2:
            ans = (ans*x)%t
        x=(x*x)%t
        n>>=1
    return ans 

便利系

heapq

優先度付きキュー計算量は

最後に

こんなもんかな
自分でチートシートを作る方法もあるのでぜひやってみてください
僕のチートシート↓↓

よかったら見てくださいただunionfindは鉄則本の丸パクリです

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?