一道GCD LCM题目题解
题目描述:
第一行和第二行输入8个数字,对应每一位第二行都小于第一行,求最小的值xxx令xxx对第一行每一位取余后等于第二行(x不小于第一行的每个数)(x不小于第一行的每个数)(x不小于第一行的每个数)
题目分析:
首先有式子xxx%a=ba=ba=b,xxx%c=dc=dc=d,先设第一个满足条件的xxx为x1x1x1对于每个满足题意的xxx,都有x=n∗LCM(a,c)+x1x=n*LCM(a,c)+x1x=n∗LCM(a,c)+x1,LCM(a,c)LCM(a,c)LCM(a,c)为aaa和ccc的最小公倍数,这点可以自行证明。此时令m=LCM(a,c)m=LCM(a,c)m=LCM(a,c)。
随后,若引入一个新的e,fe,fe,f有xxx%e=fe=fe=f,则xxx要在满足x=n∗LCM(a,c)+x1x=n*LCM(a,c)+x1x=n∗LCM(a,c)+x1的情况下查找满足新式子的最小x2x2x2,随后更新mmm,因为之后满足的xxx与x2x2x2的差值又要满足被a,c,ea,c,ea,c,e整除,因此就要将mmm更新为m=LCM(m,e)m = LCM(m,e)m=LCM(m,e),以此类推,求得最后一个满足的最小xxx即为答案。
复杂度大概是ans除一个阶乘吧,不太好算,但是比暴力枚举快一些
代码:
#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<string>
#include<string.h>
#include<math.h>
typedef long long ll;using namespace std;int m, n;
struct P {int a, b;
}p[8];bool cmp(P a, P b) {return a.a < b.a;
}int gcd(int a, int b) {//gcd模板,求最大公约数return (b ? gcd(b, a % b) : a);
}int lcm(int a, int b) {//根据gcd求最小公倍数return a / gcd(a, b) * b;
}int main() {ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);//c++操作,不用管他for (int i = 0; i < 8; i++) cin >> p[i].a;for (int i = 0; i < 8; i++) cin >> p[i].b;//两行输入m = p[0].a, n = p[0].b + p[0].a; int j;//初始化,此时m每次加第一个a,n为满足第一对的最小值for (int i = 1; i < 8; i++) {for (j = n; ; j += m) {//j被初始化为当前最小值每次加mif (j % p[i].a == p[i].b && j % p[i - 1].a == p[i - 1].b) {//判断成立,更新n和m,退出当前层循环n = j, m = lcm(m, p[i].a); break;}}}cout << n << endl;return 0;
}
/*
2 3 5 7 11 13 17 19
1 2 4 6 10 12 16 18
*/
一道GCD LCM题目题解相关推荐
- ptaa乘以b_PTA|团体程序设计天梯赛-练习题目题解锦集(C/C++)(持续更新中……)...
C++ CPP C++语言开发 PTA|团体程序设计天梯赛-练习题目题解锦集(C/C++)(持续更新中--) PTA|团体程序设计天梯赛-练习题目题解锦集(持续更新中) 实现语言:C/C++: ...
- PTA|团体程序设计天梯赛-练习题目题解锦集(C/C++)(持续更新中……)
PTA|团体程序设计天梯赛-练习题目题解锦集(持续更新中) 实现语言:C/C++: 欢迎各位看官交流讨论.指导题解错误:或者分享更快的方法!! 题目链接:https://pintia.cn/ ...
- hdu-3071 Gcd Lcm game---质因数分解+状态压缩+线段树
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3071 题目大意: 给定一个长度为n的序列m次操作,操作的种类一共有三种 查询 L :查询一个区间的所 ...
- UVa 11388 - GCD LCM
题目大意:给出两个数的最大公约数G和最小公倍数L,求出这两个数. 根据a*b = GCD * LCM,然后枚举判断就好了. 1 #include <cstdio> 2 typedef un ...
- GCD and LCM Aizu - 0005(辗转相除)+GCD LCM Inverse POJ - 2429(java或【Miller Rabin素数測试】+【Pollar Rho整数分解】)
题目:GCD and LCM Aizu - 0005 Write a program which computes the greatest common divisor (GCD) and the ...
- 牛客挑战赛47 A 一道GCD问题
牛客挑战赛47 A 一道GCD问题 思路参考牛客上的题解: 根据多维的更相减损术得gcd(x,y,z)=gcd(x,y−x,z−y)得 gcd(a1+k,a2+k,a3+k-,an+k)=gcd(a1 ...
- C/C++描述 第十一届蓝桥杯省赛 C/C++ 大学C组 第一场(2020.7.5) 题目+题解
C/C++描述 第十一届蓝桥杯省赛 第一场(2020.7.5) 题目+题解 大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博客地址为:亓 ...
- POJ2429 GCDLCM Inverse(整数分解,由GCD+LCM求a,b)
POJ2429 GCD&LCM Inverse(整数分解,由GCD+LCM求a,b) 分类: 数论 2013-02-12 22:00 180人阅读 评论(1) 收藏 举报 题目:GCD ...
- 一道魔性的贪心题目(随意吐槽)
今天是小浩算法 "365刷题计划" 第101天 .分享一道很魔性的题目(很多槽点),也是一道入门级别的贪心算法题目. 01 PART 分发饼干 贪心算法(又称贪婪算法)是指,在对问 ...
最新文章
- APPIUM Android 定位方式
- 牛逼! IDEA 2020 要本土化,真的是全中文了!
- linux-2.6.
- python 局域网通信_python实现局域网内实时通信代码
- 形容计算机专业好句子,关于形容专业水平高的句子大全 精于专业的名言警句...
- LeetCode 85.最大矩形
- mount: RPC: Unable to receive; errno = Connection refused 的解决方法
- 【故障分析】基于matlab轴承故障仿真信号时域波形图+幅度谱图【含Matlab源码 123期】
- PDF有编辑密码怎么办?该怎么去除
- 安装JDK与配置java环境变量
- 《CSS 揭秘》每章详细读书笔记
- 全国省市县数据库脚本
- 关于触摸板设备USB映射虚拟桌面的VID与PID
- openerp mysql_openerp 经典收藏 Openerp开发进销存系统完毕总结(转载)
- 解决IntelliJ IDEA Properties中Unused property提示
- 论文阅读《A Large Dataset to Train Convolutional Networks for Disparity, Optical Flow, and Scene Flow Es》
- OCR手写数字识别什么软件好用?介绍一种
- 什么是嵌入式服务器?为什么使用嵌入式服务器?
- 如何用html5做个人中心,个人中心页面从思考到设计全过程
- SSD硬盘的4K对齐
热门文章
- 第三次学JAVA再学不好就吃翔(part8)--基础语法之运算符
- 走近分形与混沌(part13)--自然现象就其本质来说,是复杂而非线性的
- 机器学习-集成学习:随机森林(Random Forest)
- created不能异步_mpvue里created里异步请求结果,如何在beforeMount里获取到呢
- SAP Commerce Cloud 产品主数据读取的单步调试
- Chrome 开发者工具 live expression 的用法
- yarn install 遇到的错误消息 - Error EPERM operation not permitted, open .yarnrc
- SAP Spartacus里的StorefrontConfig静态类型
- SpringBoot启动时就会自动去连接mongdo DB指向的url
- SAP Analytics Cloud Smart Discovery不支持具有exception aggregation设置的模型