2 条题解

  • 1
    @ 2023-4-23 21:36:49

    x 一定是 b1 的约束

    一个数的约数一定小于 2x\sqrt{x}

    所以枚举到 x\sqrt{x} 即可

    而一个数的约束其实更少只有几千

    所先看每个数是否是约束在看其他条件符合吗

    #include<bits/stdc++.h>
    using namespace std;
    #define endl "\n"
    #define int long long
    #define d double
    #define ld long double
    const int MAXN=200000;
    const int MAXM=500000;
    const int MAXQ=500000;
    const int INF=0x1f1f1f1f1f1f1f1f;
    int gcd(int a,int b)
    {
    	if(a<b)
    		swap(a,b);
    	if(b==0)
    		return a;
    	return gcd(b,a%b);
    }
    int lcm(int a,int b)
    {
    	return a*b/gcd(a,b);
    }
    int T;
    int a0,a1,b0,b1;
    signed main()
    {
    	ios::sync_with_stdio(false);
    	cin.tie(0);	
    	cin>>T;
    	while(T--)
    	{
    		cin>>a0>>a1>>b0>>b1;
    		int cnt=0;
    		for(int i=1;i*i<=b1;i++)
    			if(b1%i==0)
    			{
    				if(lcm(b0,i)==b1&&gcd(i,a0)==a1)
    					cnt++;
    				if(i*i!=b1&&b1%i==0&&lcm(b0,b1/i)==b1&&gcd(b1/i,a0)==a1)
    					cnt++;
    			}
    		cout<<cnt<<endl;
    	}
    	return 0;
    }
    

    信息

    ID
    105
    时间
    1000ms
    内存
    128MiB
    难度
    5
    标签
    递交数
    29
    已通过
    13
    上传者