在圆上一点S,扔出一个球,这个球经过若干次反弹还有可能回到S点。N = 4时,有4种扔法,如图:
![](https://img.51nod.com/upfile/000fbd07/08d18058fd3c6dcc000000000014a963.png)
恰好经过4次反弹回到起点S(从S到T1,以及反向,共4种)。
给出一个数N,求有多少种不同的扔法,使得球恰好经过N次反弹,回到原点,并且在第N次反弹之前,球从未经过S点。
Input
输入一个数N(1 <= N <= 10^9)。
Output
输出方案数量。
Input示例
4
Output示例
4
#include<iostream>
#include<cstring>
using namespace std;
int fun(int n)
{
int result = n;
for (int i = 2; i*i <= n; ++i)
{
if (n % i == 0)
{
result -= result / i;
while (n % i == 0)
{
n /= i;
}
}
}
if (n > 1)
{
result -= result / n;
}
cout << result << endl;
}
int main(int argc,char *argv[])
{
int n;
cin >> n;
fun(n + 1);
return 0;
}