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

No.3301 Make Right Triangle ユーザー解説

Last updated at Posted at 2025-10-05

問題概要

問題URL

問題文

長さが $L$ である辺を含み、すべての辺の長さが正整数である直角三角形を構築してください。
$T$ 個のテストケースが与えられるので、それぞれについて答えてください。

制約

  • $1 \leq T \leq 10^5$
  • $1 \leq L \leq 10^9$
  • 入力はすべて整数である

解説

ピタゴラス数の性質を利用します。

正整数 $m, n$ について、
$$(A, B, C) = (m^2 - n^2, 2mn, m^2 + n^2)$$
なる $A, B, C$ は必ず直角三角形をなします。このような $m, n$ を見つければ良いです。

L が偶数のとき

$m = \frac{L}{2}, ~ n = 1$ とすることで、$B = L$ となります。

L が奇数のとき

$x^2 - (x - 1)^2 = 2x - 1$ を利用します。

$L = 2 x - 1 \Leftrightarrow x = \frac{L - 1}{2}$ となる $x$ について、 $m = x, ~ n = x - 1$ とすることで $A = L$ とすることができます。

このようにして各質問に対して計算量 $O(1)$ で求めることができました。
$A, B, C$ の大きさは $O(L^2)$ となり、$64$-bit 整数型の範囲で十分収まります。

余談

MMA Contest 020 オンサイトで参加していました!めちゃくちゃ面白かったです。
ユーザー解説を書くことでゆるふわポイントなるものが得られるみたいなので、稼いでみました。

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