1 条题解
-
0
对于每一个可以被选择的 ,都一定有 的形式。
所以 一定是 或 的因数,而这两个数的因数的交集只有 ,而 又不合法,所以我们直接根号分别枚举因数即可。
另外 的时候非常恶心,所以你得特判。
#include<bits/stdc++.h> using namespace std; #define int long long const int N=1e6; signed main() { int n;cin>>n;int ans=0; for(int i=1;i<=sqrt(n);i++)if(n%i==0) { int i1=n/i,m=n; while(m%i1==0)m/=i1; if(m%i1==1&&i1!=i)ans++; if(i==1)continue; m=n; while(m%i==0)m/=i; if(m%i==1)ans++; } for(int i=1;i<=sqrt(n);i++)if((n-1)%i==0) { if(n==2&&i==1)continue; else if(i*i==n-1||i==1)ans++; else ans+=2; } cout<<ans; return 0; }
- 1
信息
- ID
- 11867
- 时间
- 2000ms
- 内存
- 1024MiB
- 难度
- 10
- 标签
- 递交数
- 4
- 已通过
- 2
- 上传者