CafeCoder Test 003
コンテスト日時
2021/05/16 (Su) 14:40 - 16:10

B - 数の分割 (Dividing Numbers)

Darjeeling
2
s
1024
MB
300

問題文

ミタルシ君はCafeCoder Test 003の開催の記念に $A^2 \le 3B$ なる整数 $A,\ B,\ C$ を貰いました。このままだと大きすぎて管理できないので、この $3$ つの整数を次の条件を満たす複素数$\ x,\ y,\ z$ に分割したいです。

$$
\begin{cases}
x + y + z = A \
xy + yz + zx = B \
xyz = C \
\end{cases}
$$

$A,\ B,\ C$ が与えられるので,題意の条件を満たす複素数 $(x,\ y,\ z)$ の組を1つ求め,$x,\ y,\ z$ のうち実数であるものをすべて空白区切りで出力してください。そのような複素数の組や実数が存在しない場合は,:(と出力してください。

制約

  • $-10000 \le A,\ B,\ C\le 10000$
  • $A^2 \le 3B$
  • 入力は全て整数

小課題

  1. (15点)$\ (x,\ y,\ z)\ $のうち,少なくとも1つは正の整数となるような組が必ず存在する
  2. (35点)$\ (x,\ y,\ z)\ $のうち,少なくとも1つは整数となるような組が必ず存在する
  3. (250点) 追加の制約はない

入力

入力は以下の形式で与えられる

$A$ $B$ $C$

出力

答えを出力してください。ただし,絶対誤差または相対誤差が $0.0001$ 以下のとき正解とみなされます。

入力例 1
0 0 1
出力例 1
1

たとえば,$(x,\ y,\ z)=(1,\ \dfrac{-1-\sqrt3 i}{2},\ \dfrac{-1+\sqrt3 i}{2})$に分解できます。このうち実数であるものは $1$ のみなので,$1$ を出力します。

入力例 2
-12 959 -9390
出力例 2
-10
入力例 3
73 6803 -2687
出力例 3
-0.393303926

想定解との絶対誤差または相対誤差が $10^{-4}$ より小さいとき,正解とみなされます。

提出
C++23 (g++ 12.2.0)