题意:给定正整数 b (b < power(10,18)) 对于 a (1 <= a <= power(10,18)) ,问有多少个符合 lcm(a,b) / a 不同取值的个数
题解 : a * b = gcd(a,b) * lcm(a,b) 即求 b 的因数个数。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
ll n;
cin>>n;
ll cnt = 0;
for(ll i = 1; i * i <= n; i++) // 只求一半, 后而加二
{
if(n % i == 0)
{
if(n == i * i) // 最后一个特判
cnt++;
else
cnt += 2; //加二
}
}
cout<<cnt<<endl;
return 0;
}