Solution:
注意到有,.
所以对于偶数k,满足
对于奇数k,满足
所以答案即为n-1/n+1的因子个数(除1外)
Code:
#include<bits/stdc++.h>
#define rep(i,j,k) for(int i=j;i<=k;i++)
using namespace std;
int main(){
long long n,k;scanf("%lld%lld",&n,&k);
n+=(k%2==1);n-=(k%2==0);
int ans=-1;
for(long long i=1;i*i<=n;i++){
if(n%i!=0)continue;
ans++;ans+=(i*i!=n);
}
printf("%lld\n",ans);
return 0;
}
Solution:
首先暴力搜出N从0到8的答案,
接着列出转移方程