HDU 4497 GCD and LCM 解题报告

通化邀请赛

题意:

给你一个G和一个L,求有多少个有序的三个整数,使得gcd(x,y,z)=G,lcm(x,y,z)=L。

解法:

L若能整除G则有解。将L/G质数分解,假设因子p1的质数为a1,则x,y,z中至少一个数含有p1^a1,至少一个数不含p1,另一个数随便,所以对于p1而言方案数为2*C(2,3)+(a1-1)*A(2,3)。

#include 
#include 
#include 
#include 
#include 
#include 
#define MAXN 100010
using namespace std;
bool vi[MAXN]={0};
vector pri,fac;
long long tans=0;
int main()
{
    int g,l,ncase;
    long long ans=1;
    for(int i=2;i1) fac.push_back(1);
        for(int i=0;i


你可能感兴趣的:(水题,偏易)