题解:AT_abc161_f [ABC161F] Division or Subtraction
建议降黄或橙。
题目分析
非常简单的分讨题,分两种情况。
注意:当
最后将两种情况的方案数加起来输出即可。
为何
我们会发现第一种情况
时间复杂度约为
AC Code
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll n, ans = 0;
int main(){
cin >> n;
for(ll i = 1; i * i <= n; i ++){
if(n % i == 0){
ll x = n;
if(i != 1){
while(x % i == 0)
x /= i;
if(x % i == 1) ans ++;
}
if(i * i == n) continue;
x = n;
if(n / i != 1){
while(x % (n / i) == 0)
x /= (n / i);
if(x % (n / i) == 1) ans ++;
}
}
}
n --;
for(ll i = 1; i * i <= n; i ++){
if(n % i == 0 ){
if(i != 1) ans ++;
if(i * i != n) ans ++;
}
}
cout << ans;
return 0;
}