有关Gcd,Lcm的一点小结论
先介绍两个:
大数的Gcd
Stein+欧几里德
function stein(a,b:int64):int64;
begin
if a<b then exit(stein(b,a));
if b= then exit(a);
if ((a and )=) and ((b and )=) then exit(stein(a>>,b>>)<<);
if (a and )= then exit(stein(a>>,b));
if (b and )= then exit(stein(a,b>>));
exit(stein((a+b)>>,(a-b)>>));
end;
小数的Gcd
辗转相除法
function stein(a,b:int64):int64;
begin
if a<b then exit(stein(b,a));
if b= then exit(a);
if ((a and )=) and ((b and )=) then exit(stein(a>>,b>>)<<);
if (a and )= then exit(stein(a>>,b));
if (b and )= then exit(stein(a,b>>));
exit(stein((a+b)>>,(a-b)>>));
end;
我们经常要计算到lcm,我们有一个特别优雅的结论
a*b/gcd(a,b)=lcm(a,b)
如此我们只需计算gcd即可,当a,b比较大的时候是一个很好的优化
下面来看一题
题目描述

输入
对于每个测试点:
第一行包括一个整数T,代表数据组数。
对于接下来的每一组数据,包括两行。
第一行,为一个整数N 代表序列长度。
第二行,为用空格分隔的N 个整数Ai,分别代表每一个材料计算好的权值。
输出
对于第i 组数据,你需要输出组数标示“Case i: ” 其中i 表示当前的数据组数。
紧接着,需要输出所要计算的参数α与β,以空格分隔。
如果不存在所要求的子串,对应的参数α或β 设为-1。
样例输入
2
7 2
4
2 2 3 4
3
2 2 4
样例输出
Case 2: 4 2
Case 3: -1 -1
提示
.png)
这题大概意思要你分别求两个最长子串,使gcd(al,a2,....,ar)=1 lcm(al,.....ar)=al*....*ar;
gcd好做,读入时不断gcd(a[i],a[i+1]),如果存在gcd(a[i],a[i+1])=1则整串互质,即ans:=n;否则就无解了
第二问Dp做法
f[i]=max(f[i-1]+1,i-k+1); k为最后一个不于ai互质的数的编号。
答案就是max(f[1].....,f[n-1],f[n]);
复杂度O(n)
第二种解法:维护队列
1 维护一个这样的队列使得队列中的数两两互质
2 从左到右依次让元素入队如果队列中一旦不互质,则让队首出队,直到满足两两互质,在这过程中记录元素个数即可
有关Gcd,Lcm的一点小结论的更多相关文章
- Mathematics:GCD & LCM Inverse(POJ 2429)
根据最大公约数和最小公倍数求原来的两个数 题目大意,不翻译了,就是上面链接的意思. 具体思路就是要根据数论来,设a和b的GCD(最大公约数)和LCM(最小公倍数),则a/GCD*b/GCD=LCM/G ...
- 数论入门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 ...
- 洛谷 UVA11388 GCD LCM
UVA11388 GCD LCM Description of the title PDF The GCD of two positive integers is the largest intege ...
- POJ 2429 GCD & LCM Inverse(Pollard_Rho+dfs)
[题目链接] http://poj.org/problem?id=2429 [题目大意] 给出最大公约数和最小公倍数,满足要求的x和y,且x+y最小 [题解] 我们发现,(x/gcd)*(y/gcd) ...
- hdu-3071 Gcd & Lcm game---质因数分解+状态压缩+线段树
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3071 题目大意: 给定一个长度为n的序列m次操作,操作的种类一共有三种 查询 L :查询一个区间的所 ...
- UVA11388 GCD LCM
(链接点这儿) 题目: The GCD of two positive integers is the largest integer that divides both the integers w ...
- 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 ...
- [POJ 2429] GCD & LCM Inverse
GCD & LCM Inverse Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 10621 Accepted: ...
- 关于win8开发的一点小总结
我今天做画面的时候,发现了一点小问题. 我在xmal文件里面加了一个CheckBox控件,设置IsChecked属性为True,并添加了Checked事件.Checked事件里面有对另外一个TextB ...
随机推荐
- Linux学习之系统时间同步
一.系统时间的设置 在Linux中设置系统时间,可以用date命令: //查看时间 [root@localhost ~]# date 2008年 12月 12日 星期五 :: CST //修改时间 [ ...
- threadid=1: thread exiting with uncaught exception (group=0x40db8930)
异常信息如下: 07-26 17:23:49.521: W/dalvikvm(29229): threadid=1: thread exiting with uncaught exception (g ...
- Flink资料(4) -- 类型抽取和序列化
类型抽取和序列化 本文翻译自Type Extraction and Serialization Flink处理类型的方式比较特殊,包括它自己的类型描述,一般类型抽取和类型序列化框架.该文档描述这些概念 ...
- python模块—optparse
处理命令行参数 1 #-*-coding:utf-8-*- __author__ = 007 __date__ = 16 / 1 / 19 from optparse import OptionPar ...
- MYSQL 错误日志
背景知识 : 就算我们不配置mysql的错误文件,它也会有一个默认的,在data文件夹下保存(.err文件) 还好这个文件保存在哪我们还是可以配置的 配置方法: log-err=E:\DB\mysql ...
- lint使用简介
LINT工具是一种软件质量保证工具,许多国外的大型专业软件公司,如微软公司,都把它作为程序检查工具,在程序合入正试版本或交付测试之前一定要保证通过了LINT检查,他们要求软件工程师在使用LINT时要打 ...
- 限制div高度当内容多了溢出时显示滚动条
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type"content= ...
- Android官方终于支持 Navigation Drawer(导航抽屉)模式
在2013 google IO当天,Android团的更新了Support库,新版本(V13)的Support库中新加入了几个比较重要的功能. 添加 DrawerLayout 控件,支持创建 Nav ...
- IIS发布问题-用户 'IIS APPPOOL\DefaultAppPool' 登录失败
今天新建了一个ASP.NET(Language=C#)网站,配置好数据库后编写了几行代码测试数据库的是否能正常使用. 当运行程序时,第一个页面都没有打开就出现了错误(因为我首页就访问数据库,填充一些D ...
- 实现一个简单的邮箱地址爬虫(python)
我经常收到关于email爬虫的问题.有迹象表明那些想从网页上抓取联系方式的人对这个问题很感兴趣.在这篇文章里,我想演示一下如何使用python实现一个简单的邮箱爬虫.这个爬虫很简单,但从这个例子中你可 ...