hdu 4497 最大公约数和最小公倍数
来源:互联网 发布:云计算的虚拟化技术 编辑:程序博客网 时间:2024/05/17 03:01
今天做2013ACM-ICPC 吉林通化的题,结果是很差,以前每次做完钢牛都会说他自己越来越弱了,而我只是想说,我似乎一直都是这么弱,比赛的时候看到了这题求最大公约数和最小公倍数,分析了一半然后觉得可麻烦,其实还是自己的思路不成熟,然后就在那里动想一下西想一下,每次都是思路走了一半之后自己就停车了,结果一下午就做了一题,似乎最简单的第一题也是wa了无数次没有AC的。
思路:对于n和m,如果m%n!=0,那么肯定是不存在的。
然后对于x=m/n进行分析,对与x进行质因数分解,假设其中的一个质因数为y,起指数为t,那么要使的三个数关于质因数y的最小公倍数为1最大公约数为y^t,那么三个数中关于y的指数一定的存在0和t,分情况讨论,如果三个数不同,则有6*(-1)种情况,还有的就是两个相同的,那么有六种情况,总共有6*t种情况,注意要用long long
#include<iostream>#include<cstdio>#include<string>#include<cstring>#include<cmath>#include<algorithm>#include<queue>#include<stack>#include<vector>#include<climits>#include<map>using namespace std;#define rep(i,n) for(int i=0; i<n; i++)#define repf(i,n,m) for(int i=(n); i<=(m); ++i)#define repd(i,n,m) for(int i=(n); i>=(m); --i) #define ll long long#define arc(a) ((a)*(a))#define inf 100000#define exp 0.000001#define N 400000 ll n,m;ll a[N];ll ans;ll fun(ll x){ll sum=1;ll i=2;ll l=0;memset(a,0,sizeof(a));while(i<=x){if(x%i==0)a[l++]=1,x/=i;while(x%i==0)a[l-1]++,x/=i;++i;}rep(i,l) sum*=a[i]*6;return sum;}int main(){ int test;scanf("%d",&test);while(test--){cin>>n>>m;if(m%n!=0){printf("0\n"); continue;}ll x=m/n;ans=fun(x);cout<<ans<<endl;} return 0;}
- hdu 4497 最大公约数和最小公倍数
- hdu 4497(最大公约数和最小公倍数)
- HDU 最大公约数和最小公倍数
- 2. 最大公约数和最小公倍数
- 求两数最大公约数和最小公倍数
- 最大公约数和最小公倍数
- 求最大公约数和最小公倍数
- 最大公约数和最小公倍数
- 最大公约数和最小公倍数
- 求最大公约数和最小公倍数
- 最小公倍数和最大公约数
- 最大公约数和最小公倍数
- 最大公约数和最小公倍数
- 求最大公约数和最小公倍数
- 最大公约数和最小公倍数算法
- 求最大公约数和最小公倍数
- 最小公倍数和最大公约数
- 最大公约数和最小公倍数
- mysql 学习之二 表类型(存储引擎)的选择
- HDU 1002 A + B Problem II
- Java对象的生命周期
- HDU 2090 算菜价
- Succession
- hdu 4497 最大公约数和最小公倍数
- Catalan数计算及应用
- android socket编程实例
- HDU 2087 剪花布条
- python手记(42)
- Ubuntu 单IP 搭建 Vpn 服务
- HDU 2092 整数解
- Java中的几种引用类型
- 第一节,学习cocos2d-x的前期准备