Time Limit: 2 sec / Memory Limit: 1024 MB
配点 : 600 点
問題文
正整数 N が与えられます。
2 以上 N 以下の整数 K を決めて、N が K 未満になるまで次の操作を繰り返し行います。
- 操作:N が K で割り切れるとき、N を N/K に置き換える。そうでないとき、N を N-K に置き換える。
最終的に N が 1 になるような K の決め方は何通りありますか?
制約
- 2 \leq N \leq 10^{12}
- N は整数
入力
入力は以下の形式で標準入力から与えられる。
N
出力
最終的に N が 1 になるような K の決め方が何通りあるか出力せよ。
入力例 1
6
出力例 1
3
最終的に N が 1 になるような K は 2,5,6 の 3 通りです。
それぞれのとき、N は次のように変化します。
- K=2 のとき:6 \to 3 \to 1
- K=5 のとき:6 \to 1
- K=6 のとき:6 \to 1
入力例 2
3141
出力例 2
13
入力例 3
314159265358
出力例 3
9
Score : 600 points
Problem Statement
Given is a positive integer N.
We will choose an integer K between 2 and N (inclusive), then we will repeat the operation below until N becomes less than K.
- Operation: if K divides N, replace N with N/K; otherwise, replace N with N-K.
In how many choices of K will N become 1 in the end?
Constraints
- 2 \leq N \leq 10^{12}
- N is an integer.
Input
Input is given from Standard Input in the following format:
N
Output
Print the number of choices of K in which N becomes 1 in the end.
Sample Input 1
6
Sample Output 1
3
There are three choices of K in which N becomes 1 in the end: 2, 5, and 6.
In each of these choices, N will change as follows:
- When K=2: 6 \to 3 \to 1
- When K=5: 6 \to 1
- When K=6: 6 \to 1
Sample Input 2
3141
Sample Output 2
13
Sample Input 3
314159265358
Sample Output 3
9