GCD & LCM (数学基础)
来源:互联网 发布:吉大动物医学就业知乎 编辑:程序博客网 时间:2024/05/22 13:09
Given x and y (2 <= x <= 100,000, 2 <= y <= 1,000,000), you are to count the number of p and q such that:
1) p and q are positive integers;
2) GCD(p, q) = x;
3) LCM(p, q) = y.
input
There are multiple test cases, each case contains two integers x and y, one line for each test case.
output'Number of pairs of p and q.
sample input
3 60
sample output
4
题目大意:就是找出p*q=x*y,pq的对数。
用一个公式很好:(a/gcd )*(b/gcd)= lcm/gcd(其实是百度的)
这样子把lcm的数量级降下来了。
而且左边2块互质,这样子递归求解最大公约数时的层次走少了好几步。不容易超时,一开始超时到绝望。
#include<iostream>#include<cstdio>#include<string>#include<algorithm>#include<cstring>using namespace std; int x,y,lg; int gcd(int a,int b){ if(a%b==0) return b; return gcd(b,a%b); } void sswap(int &a,int &b){ int tmp=a; a=b; b=tmp; } int main(){while(scanf("%d%d",&x,&y)!=EOF){ if(y%x!=0) { printf("0\n"); continue; } lg=y/x; int a,b; int cnt=0; for(int i=1;i<=lg;i++) { a=i; if(lg%a==0) { b=lg/a; if(a%2==0&&b%2==0) continue; if(a<b) sswap(a,b); if(gcd(a,b)==1) cnt++; } } printf("%d\n",cnt); } }总结:其实一个思想很重要:把求解的数转化成和质数有关来求解,因为质数相对合数少很多,所以这样处理问题范围减小很多!
另为什么验证素数的时候只需验证到该数的开方根呢?因为如果n可以被一个数整除,那么就必然有一个因子小于开方根,必然有一个因子大于开方根
因为i=a×b,a与b不能同时大于sqrt(i),为什么呢?如果a>sqrt(i),b>sqrt(i),于是a×b>sqrt(i)*sqrt(i)=i,因此就都不能整除i了!
(这个也是百度过来的)
阅读全文
0 0
- GCD & LCM (数学基础)
- 基础数学·GCD&LCM
- HDU 4497 GCD and LCM(数学)
- UVA 11388-GCD LCM(数学)
- uva 11388 GCD LCM(数学:水题)
- uva 11388 GCD LCM(简单数学)
- UVAOJ 11388 GCD LCM (简单数学)
- HDU-4497 GCD and LCM (数学)
- uva11388 GCD LCM(数学)
- hdu 4497 GCD and LCM (素数分解+组合数学)
- HDU2503(GCD&&LCM)
- hdu1099(gcd+lcm)
- HDOJ 题目4497 GCD and LCM (组合数学,gcd性质)
- hdu 4497 GCD and LCM(组合数学)
- poj 2429 GCD & LCM Inverse 【java】+【数学】
- [UVa 11889] Benefit (基础数论+GCD+LCM)
- 基础数论算法(2) GCD LCM EXGCD 学习笔记
- HDU 4497 - GCD and LCM (质因式分解 GCD LCM)
- ActoiveMQ主备环境搭建
- UVa1605 例题8-2 联合国大楼(Building for UN,ACM/ICPC NEERC 2007)
- 【stm32f103】USART RX实现(寄存器版)
- 真正理解 git fetch, git pull 以及 FETCH_HEAD
- Spring编程<六>
- GCD & LCM (数学基础)
- 登录验证码的制作!
- JAVAEE之Spring学习(三)---通过aop切面实现事务处理
- js字符操作
- Github 使用 与 Git的链接
- graphviz在linux上的中文乱码问题解决办法
- 《head_first_html_learnning》
- 成为Java顶尖程序员 ,看这11本书就够了
- Android系统休眠机制和doze模式的关系