平方数の判定をするアルゴリズム
Nが自然数の2乗で表現できるとき、平方数と言います。
平方数の例4 (= 2×2)9 (= 3×3)
16 (= 4×4)
25 (= 5×5)
アルゴリズム
以下の方法以外にも色々な求め方 ...
Nの約数の個数を求めるアルゴリズム
素因数分解を用いることで、約数の個数を簡単に求めることができます。
アルゴリズムNの約数の個数:
N を素因数分解するそれぞれの指数に1を足す
「2.」で得られたものを全てかけ合わせる
B – 123 Triangle 解説 (AtCoder Grand Contest 043)
問題へのリンク
問題概要1,2,3 で構成された整数列 \(a_1 a_2 a_3 \cdots a_N\) が与えられ、\(x_{i,j}\) を以下のように再帰的に定義する。
\(x_{1,j} := a_j\) ...プリム法による最小全域木を求めるアルゴリズム
無向グラフ \(G=(V,E)\) について、\(G\) の部分グラフ \(T\) が以下を満たす時、\(T\) は全域木(Spanning Tree) と言います。
\(T\) は木\(T\) では\(V\) の任意の ...
クラスカル法による最小全域木を求めるアルゴリズム
無向グラフ \(G=(V,E)\) について、\(G\) の部分グラフ \(T\) が以下を満たす時、\(T\) は全域木(Spanning Tree) と言います。
\(T\) は木\(T\) では\(V\) の任意の ...
パスカルの三角形による二項係数(nCk)の計算
以下のような「上の2つを足して下の数字をつくる三角形」をパスカルの三角形といい、上から \(n\) 行目・左から \(k\) 個目の数は、\(_{n}\mathrm{C}_{k}\) に対応しています。(0-indexed)
二項係数(nCk)の偶奇判定のアルゴリズム
Lucasの定理を利用することで、二項係数(nCk) が偶数なのか奇数なのかを効率よく判定することができます。
アルゴリズムLucasの定理をそのまま利用したアルゴリズム:
\({}_{n_i}\mathrm ...二項係数(nCk)を素数(p)で割った余りの計算(Lucas の定理)
Lucas の定理を利用すると、\(_{n}\mathrm{C}_{k}\)% \(p\) が \(O( p^2 \log_p n)\) で計算できます。素数 \(p\) が小さい場合は十分高速です。
Lucas の定理任 ...
配列の全ての要素(N個)の最大公約数(GCD)を求めるアルゴリズム
配列 A が与えられて、その全ての要素の最大公約数(GCD)を求めることを考えます。2つの最大公約数だけではなく、N個の要素の最大公約数を求めます。
例:
Input: A = {36, 12, 48}
拡張ユークリッドの互除法
最大公約数を求める高速なアルゴリズムとしてユークリッドの互除法が知られています。このユークリッドの互除法を拡張することにより、
$$ ax+by=gcd(a,b)$$
の形をした、2変数の一次方程式の整数解を求 ...