No.3358 逆数の小数部分
タグ : / 解いたユーザー数 37
作問者 : 👑
yu23578
問題文
入力に十進法の有限小数で表せる正実数 $X$ が与えられます。
$X$ を $X^{-1}$ の小数部分に置き換える操作を、$X$ が正であり続ける限り繰り返します。
ただし実数 $x$ の小数部分とは、$x$ から $x$ を超えない最大の整数 $\lfloor x \rfloor$ を引いた値 $x - \lfloor x \rfloor$ です。
操作が行われる回数を求めてください。
入力
入力は以下の形式で標準入力から $1$ 行で与えられます:
- $X$ が整数ならば、$X$ が十進法の半角整数で与えられます。
- $X$ が整数でないならば、$X$ が十進法の半角有限小数であって末尾に冗長な $0$ がつかない表示で与えられます。
$X$
制約
入力は以下の制約を満たします:
- $X$ は $0 < X < 10^9$ を満たす実数である。
- $10^9 X$ は整数である。
出力
操作が有限回しか行われないならばその回数を、無限回行われるならばinftyを $1$ 行に出力してください。
最後に改行してください。
サンプル
サンプル1
入力
1
出力
1
最初は $X$ が $1$ として与えられています。
$1$ 回目の操作で $X$ が $1^{-1} = 1$ の小数部分 $0$ に 置き換わります。
$X = 0$ となったので、これ以上操作は行われません。
サンプル2
入力
1.5
出力
3
最初は $X$ が $1.5$ として与えられています。
$1$ 回目の操作で $X$ が $1.5^{-1} = 0.666 \cdots$ の小数部分 $0.666 \cdots$ に 置き換わります。
$2$ 回目の操作で $X$ が $(0.666 \cdots)^{-1} = 1.5$ の小数部分 $0.5$ に 置き換わります。
$3$ 回目の操作で $X$ が $0.5^{-1} = 2$ の小数部分 $0$ に 置き換わります。
$X = 0$ となったので、これ以上操作は行われません。
サンプル3
入力
2
出力
2
最初は $X$ が $2$ として与えられています。
$1$ 回目の操作で $X$ が $2^{-1} = 0.5$ の小数部分 $0.5$ に 置き換わります。
$2$ 回目の操作で $X$ が $0.5^{-1} = 2$ の小数部分 $0$ に 置き換わります。
$X = 0$ となったので、これ以上操作は行われません。
サンプル4
入力
999999999.999999999
出力
4
最初は $X$ が $999999999.999999999$ として与えられています。
$1$ 回目の操作で $X$ が $999999999.999999999^{-1} = 0.00000000100000000000000000100000000000000000100000 \cdots$ の小数部分 $0.00000000100000000000000000100000000000000000100000 \cdots$ に 置き換わります。
$2$ 回目の操作で $X$ が $(0.00000000100000000000000000100000000000000000100000 \cdots)^{-1} = 999999999.999999999$ の小数部分 $0.999999999$ に 置き換わります。
$3$ 回目の操作で $X$ が $0.999999999^{-1} = 1.00000000100000000100000000100000000100000000100000 \cdots$ の小数部分 $0.00000000100000000100000000100000000100000000100000 \cdots$ に 置き換わります。
$4$ 回目の操作で $X$ が $(0.00000000100000000100000000100000000100000000100000 \cdots)^{-1} = 999999999$ の小数部分 $0$ に 置き換わります。
$X = 0$ となったので、これ以上操作は行われません。
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。