Official
B - Squares Editorial by maroonrk_admin
\(x^2-y=z^2\) を満たす非負整数 \(z\) が存在するとします. この時,\(x^2-z^2=(x+z)(x-z)=y\) と式を書き直すことができます.
\(p=x+z,q=x-z\) とおき,以下の条件を満たす整数 \(p,q\) を数える問題に変形します.
- \(p \geq q\)
- \(x=(p+q)/2\) は整数
- \(1 \leq x=(p+q)/2 \leq N\)
- \(1 \leq y=pq \leq N\)
これらの条件から,まず \(p,q\) が正整数であることがわかります. またさらに,\(pq \leq N\) より,\((p+q)/2 \leq N\) は自動的に従います.
ここで,\(q \leq \sqrt{N}\) より,\(q\) としてあり得る値をすべて試すことができます. そして,\(q\) の値を決めてしまえば,\(p\) としてありうる値は,\(q \leq p \leq N/q\) かつ \(p \equiv q \bmod 2\) を満たすものだとわかり,これは \(O(1)\) で数えることができます.
よって,全体で \(O(\sqrt{N})\) でこの問題を解くことができます.
posted:
last update: