hdu1108【gcd算法】

  直接上递归版gcd模板,直接while的话效率更高~

 1 #include<iostream>
 2 #include<cstring>
 3 using namespace std;
 4
 5 int gcd(int a, int b) {
 6     return a % b ? gcd(b, a % b) : b;
 7 }
 8
 9 int main() {
10     int a, b;
11     while(cin >> a >> b) {
12         int c = gcd(a, b);
13         cout << a / c * b << endl;
14     }
15     return 0;
16 } 
时间: 2024-10-22 22:16:39

hdu1108【gcd算法】的相关文章

最大公约数(Gcd)算法(Euclid)

转载自农夫三拳的一篇文章 欧几里德算法和扩展欧几里德算法 欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数.其计算原理依赖于下面的定理: 定理:gcd(a,b) = gcd(b,a mod b) 证明:a可以表示成a = kb + r,则r = a mod b 假设d是a,b的一个公约数,则有 d|a, d|b,而r = a - kb,因此d|r 因此d是(b,a mod b)的公约数 假设d 是(b,a mod b)的公约数,则 d|b , d|r ,但是a = kb + r 因

如何使用拓展gcd算法算出ax+by=c的最小正整数解x——Looooops 题解

题目大意: 给出四个整数 $ A B C K $ 求出 m $ (A + C*n) \equiv B (mod \quad 2^K) $ 的最小整数解 $ n $ . 解法: 这个东西我们同过一系列的化简之后可以得出一下方程: \[ C*n +2^k * y=B-A (y<0) \] 原文地址:https://www.cnblogs.com/lixiao189/p/9460683.html

公约数算法

/* 对于已知的两个自然数m, n,假设m>n 计算m除以n,将得到的余数记做r 如果r=0,则此时的n为求得的最大公约数.否则,将n的值保存在m中,将r的值保存在n中, 重复执行下去. */ //欧几里得->辗转相除法 #include <stdio.h> #include <string.h> #include <math.h> #include <stdlib.h> #include <iostream> #include &l

算法交作业之最大公约数

今天写一下最大公约数算法,英文简称为Gcd算法. 1.递归解法: /*书上并没有给出递归的解法,可能是觉得这个解法不是很完美,但是给出来就当学习下递归.*/ int Gcd(unsigned num1, unsigned num2){ if (num1 == 0 || num2 == 0)//算法基于欧几里德的算法. return (num1 > num2) ? num1 : num2; return Gcd(num2, num1%num2); } //代码写的很短小,但是效率可能不是很高 //

最大公约数与最小公倍数算法整理

最大公约数:能够同时被两个数整除的那个最大的数. 最小公倍数:两个整数公有的倍数成为他们的公倍数,其中一个最小的公倍数是他们的最小公倍数. 最小公倍数=两整数的乘积÷最大公约数 反之同理. 最大公约数算法: 1.GCD算法(欧几里得算法): 定理:两个整数的最大公约数等于其中较小的那个数和两数的相除余数的最大公约数.最大公约数(greatest common divisor)缩写为gcd. gcd(a,b) = gcd(b,a mod b) (不妨设a>b 且r=a mod b ,r不为0) 1

HDU-2504-又见GCD(Java强行暴力水过!)

又见GCD Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 12371    Accepted Submission(s): 5257 Problem Description 有三个正整数a,b,c(0<a,b,c<10^6),其中c不等于b.若a和c的最大公约数为b,现已知a和b,求满足条件的最小的c. Input 第一行输入一个n

【P4718】Pollard-Rho算法

题面 https://www.luogu.org/problem/P4718 题解 一开始傻逼爆了,直接开的$int$,但是这道题大多数地方要用$LL$. 首先$gcd(|a-b|,n)$是不一定为质数的,必须再递归用一次$Pollard-Rho$,也求出它的最大质因子(所以最好不要把$n$开成全局变量). 结果交上去全$T$了的,后来开$int128$就变成$94$分了. 注意快速$gcd$算法(更相减损术)的卡常. #pragma GCC optimize(2) #include<cstdi

HDU 5019 简单数学题

这道题是说给定A和B,求第C大的公约数. 我们最长求的就是最大公约数了,也就是通常用的GCD算法.但是现在要求第C大的公约数,我们可以想见如果令第C大的公约数为x,最大公约数为g的话,那么x|g的,为什么呢? 我们可以直观的理解,最大公约数其实就是A和B分别进行素因子分解之后,能取到公共素因子乘起来得到的.而对于任意A.B的公约数,那么肯定包含了部分的最大公约数所包含的素因子,因此x|g. 于是要求第C大的公约数,只需要枚举g的因子就行了,我们知道求一个数的因子情况,是可以进行O(sqrt(n)

数据结构与算法分析(3)算法分析

算法是为了求解一个问题需要遵循的.被清楚地指定的简单指令的集合.对于一个问题,一旦给定某种算法并且其是正确的,那么重要的一步就是确定该算法将需要多少诸如时间或空间等资源量的问题. 此篇博客将讨论: 1.如何估计一个程序所需要的时间: 2.如何降低程序运行所需要的时间: 3.粗心使用递归的后果: 4.将一个数自乘得到其幂以及计算两个数的最大公因数的非常有效的算法:     (1)算法分析的数学基础 估计算法资源消耗所需的分析需要一套正式的系统架构: 使用四个定义: 1.如果存在正常数c和n0,使得