ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

洛谷 P1072 Hankson的趣味题题解--zhengjun

2022-06-10 20:05:44  阅读:172  来源: 互联网

标签:right 洛谷 gcd -- 题解 times int div aligned


题面传送门

吐槽一句,这么的题目能搞成蓝色???

好了,进入正题:

思路

首先,列出式子:

\[\left\{ \begin{aligned} \gcd(x,a_0)=a_1\\ lcm(x,b_0)=b_1 \end{aligned} \right. \]

那么,先来看第一个式子:

\(\gcd(x,a_0)=a_1\),设\(k_0=x\div a_1,k_1=a_0\div a_1\)

可以很快得出,\(\gcd(k_0,k_1)=1\)

证明:

如果\(\gcd(k_0,k_1)=t,t>1\),设\(k_0=t\times w_0,k_1=t\times w_1\)

所以$$
\left{
\begin{aligned}
x=t\times w_0\times a_1\
a_0=t\times w_1\times a_1
\end{aligned}
\right.

\[那么$\gcd(x,a_0)=a_1\times t$了,所以$t$定为$1$ ### 然后,再看第二个式子: $lcm(x,b_0)=b_1$,设$k_0=b_1\div x,k_2=b_1\div b_0$,同样可以得出$\gcd(k_0,k_1)=1$ #### 证明: 若$\gcd(k_0,k_1)=t,t>1$,设$k_0=t\times w_0,k_1=t\times w_1$ 则$$\left\{ \begin{aligned} x=\dfrac{b_1}{t\times w_0}\\ b_0=\dfrac{b_1}{t\times w_1} \end{aligned} \right. \]

那么,\(\gcd(x,b_0)=t\times w_0\times w_1\),所以,\(t\)定为\(1\)

所以,为了满足那个式子,就要$$\left{
\begin{aligned}
\gcd(x\div a_1,a_0\div a_1)=1\
\gcd(b_1\div x,b1\div b_0)=1
\end{aligned}
\right.

\[所以,$x$就是$b_1$的因数,只要从$1$到$\sqrt{b_1}$,枚举,然后看看符不符合,这里还有一个潜在的条件,题目中给了我们:输入数据保证 $a_0$ 能被 $a_1$ 整除,$b_1$ 能被 $b_0$ 整除,所以后面的$a_0\div a_1$和$b_1\div b_0$一定是整数,不用管,就要看看$x\div a_1$和$b_1\div x$是否为整数就可以了。 ## 代码 ```cpp #include<bits/stdc++.h> using namespace std; int n; int a0,a1,b0,b1; int gcd(int x,int y){ return y==0?x:gcd(y,x%y); } int main(){ scanf("%d",&n); while(n--){ scanf("%d%d%d%d",&a0,&a1,&b0,&b1); int ans=0; for(int i=1;i*i<=b1;i++){ if(b1%i==0){ if(i%a1==0&&gcd(i/a1,a0/a1)==1&&gcd(b1/i,b1/b0)==1)ans++; if(i!=b1/i&&b1/i%a1==0&&gcd(b1/i/a1,a0/a1)==1&&gcd(b1/(b1/i),b1/b0)==1)ans++; } } printf("%d\n",ans); } return 0; } ``` # 谢谢--zhengjun\]

标签:right,洛谷,gcd,--,题解,times,int,div,aligned
来源: https://www.cnblogs.com/A-zjzj/p/16364570.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有