Description

众所周知,我是好人!
所以不会出太难的题,题意很简单 给你两个数n和m,问你有多少对正整数对最大公约数是n,最小公倍数是m
最后友情提供解题代码(我真是太好人了)

void solve()
{
long long n, m;
scanf("%lld%lld", &n, &m);
int ans = ;
for (long long i = ; i <= m; i++)
{
for (long long j = i; j <= m; j++)
{
if (gcd(i, j) == n && lcm(i, j) == m) ans++;
}
}
printf("%d\n", ans); }

祝大家AC愉快!最好AK,送某扬兑现诺言^_^

Input
输入第1行是一个整数T,表示共T组数据。 接下来是T组数据,每组数据占1行,每一行有2个整数n,m(1 <= n, m <= 10000000000),两个数由一个空格隔开。

Output
结果输出T行,对应T组数据。(T<=100)
每行输出这样的正整数对有多少对(看我多好人,不用你们输出所有整数对)

Sample Input

3
1 1
7 10086
4 16

Sample Output

1
0
1

解题思路:(1)a,b 两数的最大公约数是n,最小公倍数是m,m 其实就是 n 乘以 a,b 各自特有的因子.那么

     肯定就有 m % n ==0 . 换句话说 如果 m % n !=0 那么 输出 就是0; 

     (2)如果n==m直接输出1,两个数相等且等于m;

     (3)设GCD = x,a = k1*x, b = k2*x,因为要使得GCD为x,那么k1,k2要互质,否则的话(假设公因子为c)求得的GCD=x*c,

     那么LCM = k1*k2*x,所以m/n=k1*k2,只要找k1,k2满足该式子就行,所以从1开始到根号m/n,找k1*k2=m/n,

     且两个互质 即GCD(k1,k2)==1 即可,那么复杂度Tn=O(√(m/n)),注意数据开long long!

代码如下:

 #include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;
typedef long long LL; LL gcd(LL a, LL b){
return !b ? a : gcd(b, a%b);
}
LL Search(LL n)
{
LL i, tmp, cnt = ;
for (i = ; i <= (double)sqrt(n*1.0); i++){
if (!(n%i)){
//能整除才拆开计算,避免不必要的错误运算
tmp = n / i;
if (gcd(i, tmp) == ) cnt++;
}
}
return cnt;
}
int main()
{
LL n, m, tmp;
int t;
scanf("%d", &t);
while (t--){
scanf("%lld%lld", &n, &m);
if (m%n){
printf("0\n");
continue;
}
if (n == m){
printf("1\n");
continue;
}
tmp = m / n;
printf("%lld\n", Search(tmp));
}
return ;
}

[GDUT 决赛]--GCD,LCM——我是好人(数论)的更多相关文章

  1. 数论入门2——gcd,lcm,exGCD,欧拉定理,乘法逆元,(ex)CRT,(ex)BSGS,(ex)Lucas,原根,Miller-Rabin,Pollard-Rho

    数论入门2 另一种类型的数论... GCD,LCM 定义\(gcd(a,b)\)为a和b的最大公约数,\(lcm(a,b)\)为a和b的最小公倍数,则有: 将a和b分解质因数为\(a=p1^{a1}p ...

  2. 广东工业大学2016校赛决赛-网络赛 1174 Problem F 我是好人4 容斥

    Problem F: 我是好人4 Description 众所周知,我是好人!所以不会出太难的题,题意很简单 给你n个数,问你1000000000(含1e9)以内有多少个正整数不是这n个数任意一个的倍 ...

  3. GCD and LCM HDU 4497 数论

    GCD and LCM HDU 4497 数论 题意 给你三个数x,y,z的最大公约数G和最小公倍数L,问你三个数字一共有几种可能.注意123和321算两种情况. 解题思路 L代表LCM,G代表GCD ...

  4. 【HDU 5382】 GCD?LCM! (数论、积性函数)

    GCD?LCM! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total ...

  5. 数论3——gcd&&lcm

    gcd(a, b),就是求a和b的最大公约数 lcm(a, b),就是求a和b的最小公倍数 然后有个公式 a*b = gcd * lcm     ( gcd就是gcd(a, b), ( •̀∀•́ ) ...

  6. 广州工业大学2016校赛 F 我是好人4 dfs+容斥

    Problem F: 我是好人4 Description 众所周知,我是好人!所以不会出太难的题,题意很简单 给你n个数,问你1000000000(含1e9)以内有多少个正整数不是这n个数任意一个的倍 ...

  7. Mathematics:GCD & LCM Inverse(POJ 2429)

    根据最大公约数和最小公倍数求原来的两个数 题目大意,不翻译了,就是上面链接的意思. 具体思路就是要根据数论来,设a和b的GCD(最大公约数)和LCM(最小公倍数),则a/GCD*b/GCD=LCM/G ...

  8. POJ 2429 GCD & LCM Inverse (Pollard rho整数分解+dfs枚举)

    题意:给出a和b的gcd和lcm,让你求a和b.按升序输出a和b.若有多组满足条件的a和b,那么输出a+b最小的.思路:lcm=a*b/gcd   lcm/gcd=a/gcd*b/gcd 可知a/gc ...

  9. 洛谷 UVA11388 GCD LCM

    UVA11388 GCD LCM Description of the title PDF The GCD of two positive integers is the largest intege ...

随机推荐

  1. iphone手机上的click和touch

    在iphone手机上绑定click事件时,当你触发点击事件时,你绑定的click事件的DOM节点,会自动被一块浮层选中.所以如果使用事件委托来做事件绑定会造成很差的用户体验. 使用touchstart ...

  2. 5.5 Function类型

    说起来ECMAScript中上面最有意思,我想那莫过于函数了,有意思的根源,则在于函数实际上是对象.每个函数都是Function类型的实例,而且都与其他引用类型一样具有属性和方法.由于函数是对象,因此 ...

  3. 使用Apache的rewrite技术

    做PHP项目中需要用到URL重定向技术,基本上的需求就是把比如 /user/heiyeluren 重定向到 /user.php?uid=heiyeluren 之类的URL上,当然,你也可以把 /art ...

  4. fitnesse 中各类fit fixture的python实现

    虽然网上都说slim效率很高,无奈找不到支持python的方法,继续用pyfit 1 Column Fixture 特点:行表格展现形式,一条测试用例对应一行数据 Wiki !define COMMA ...

  5. xbox360版本之分

    2005-11-22 发售精简版 (Core):白色 / 无硬盘 / 主板代号 Xenon(现已停产) 2005-11-22 发售豪华版 (Premium):白色 / 20 GB 硬盘 / 主板代号 ...

  6. rpc的学习

    rpc(Remote process call 即远程过程调用)是一种请求-相应的协议, 主要使用于C/S架构中,使得分布式系统成为可能.由客户端发起请求,服务端调用各种参数处理请求,当服务器在处理请 ...

  7. return view详解(转载)

    1.return View(); 返回值 类型:System.Web.Mvc.ViewResult将视图呈现给响应的 View() 结果. 注释 View() 类的此方法重载将返回一个具有空 View ...

  8. Html.ActionLink(转载)

    @Html.ActionLink 代码: <h2>HtmlHelper</h2>@Html.ActionLink("默认","Index" ...

  9. CSS3线性渐变linear-gradient

    转自 http://www.w3cplus.com/content/css3-gradient CSS3的线性渐变 一.线性渐变在Mozilla下的应用 -moz-linear-gradient( [ ...

  10. Sublime 操作技巧

    吐槽一下:刚下载的subime不是等宽字体,空格.表达.字母i什么的都很窄,看着不方便: 根据网上说的换成等宽字体,试了好多种字体,字体变了.但宽度没变. 然后有装了soda,和相应的color-th ...