AtCoder Beginner Contest 254 D問題 Together Square
問題
提出解答
問題の概要
次を満たす 以上 以下の整数の組 の個数を求めよ.
- が平方数になる.
制約
解法 1
正の整数 と素数 に対して, を
と定義する. つまり, を で割り切れる最大の回数とする.
このとき, を素数全体の集合としたとき, 正の整数 に対して, 有限個の を除いて であること, 及び,
であることに注意する.
ここで, 整数同士の積と素因数分解について, 以下が成り立つ.
を正の整数とする.
- が 乗数 任意の素数 に対して, は の倍数
よって, 積が平方数であるかどうかは各整数 における の偶奇が重要であることがわかる.
解法 2
このことから, 正の整数 と素数 に対して, を
とする. そして, を
と定める.
すると, 正の整数 に対して, 以下は同値になる.
このことから, にある の個数を としたとき, 任意の整数 に対して, であるので, 求めるべき答えは
である.
計算量は を求めるための の計算がボトルネックになる. 結局 は素因数分解で求めることになるので, で計算できる. そして, の素因数分解をすることになるので, 事前に における最小素因数を求めることにより, 全体で に高速化できる.