本文主要是介绍P1072 [NOIP2009 提高组] Hankson 的趣味题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Hankson 的趣味题
这题要有思维!对。数论!最大公约数与最小公倍数。
用LaTex写公式,真的麻烦!wcnmd!,,,,,,be----
于是我用手写了:
大功告成!上马!
#include<cstdio>
using namespace std;
int gcd(int a,int b){//没有用三目运算符,算仁慈了吧 if(b==0){return a;}else{return gcd(b,a%b);}
}
int main() {int t;scanf("%d",&t);//t组数据 while(t--) {int a0,a1,b0,b1;scanf("%d%d%d%d",&a0,&a1,&b0,&b1);int p=a0/a1,q=b1/b0,c=0;for(int x=1;x*x<=b1;x++){ if(b1%x==0){//找因子 if(x%a1==0&&gcd(x/a1,p)==1&&gcd(q,b1/x)==1){c++;//符合条件加次数 }int y=b1/x;//得到另一个因子if(x==y) {//因子都和y一样了怎么不可以跳过本次循环呢? continue;} if(y%a1==0&&gcd(y/a1,p)==1&&gcd(q,b1/y)==1){c++;} }} printf("%d\n",c);}return 0;
}
这次推公式,推了很久,过程详细。看懂了的在评论区说:我是神!!!!!!!!!
这篇关于P1072 [NOIP2009 提高组] Hankson 的趣味题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!