cf552 G Minimum Possible LCMn个数,求最小得一对lcm
You are given an array a consisting of n integers a1,a2,…,an
Your problem is to find such pair of indices i,j (1≤i<j≤n ) that lcm(ai,aj) is minimum possible.
lcm(x,y) is the least common multiple of x and y (minimum positive number such that both x and y are divisors of this number).
Input
The first line of the input contains one integer n (2≤n≤106 ) — the number of elements in a .
The second line of the input contains nn integers a1,a2,…,an (1≤ai≤107 ), where ai is the i-th element of a .
Output
Print two integers i and j (1≤i<j≤n ) such that the value of lcm(ai,aj) is minimum among all valid pairs i,j If there are multiple answers, you can print any.
5
2 4 8 3 6
1 2
5
5 2 11 3 7
2 4
6
2 5 10 1 10 2
1 4
优美的暴力
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e7 + 5;
typedef long long ll;
const ll inf = 0x3f3f3f3f3f3f3f3f;
int n, x, p1, p2, vis[maxn], a[maxn];
ll q[maxn];
int gcd(int a,int b){if(!b)return a;return gcd(b,a%b);
}
int main(){while(scanf("%d",&n)!=EOF){ll ans=inf;int l,r;memset(vis,0,sizeof(vis));memset(a,0,sizeof(a));memset(q,0,sizeof(q));for(int i=1;i<=n;++i){scanf("%d",&x);a[i]=x;if(vis[x]&&x<ans){ans=x;l=vis[x];r=i;}vis[x]=i;}sort(a+1,a+n+1);int m=unique(a+1,a+n+1)-a-1;for(int i=1;i<=a[m];++i){int cur=-1;for(int j=i;j<maxn;j+=i){if(vis[j]) {q[++cur]=j;if(cur>=1)break;}} if(cur>=1){ll d= gcd(q[0],q[1]); if(ans>q[0]/d*q[1]){ans= q[0]/d*q[1];l=vis[q[0]];r=vis[q[1]];}}}if(l>r)swap(l,r);cout<<l<<' '<<r<<endl;}return 0;
}
cf552 G Minimum Possible LCMn个数,求最小得一对lcm相关推荐
- 求两个数的最小公约数和最小公倍数
题目: 求两个数的最小公约数和最小公倍数 思路: 求最大公约数: 欧几里得在其<几何原本>中提出的欧几里得算法,有称辗转相除法, 具体做法是如果q和r分别是m除以n的商及玉树,m=nq+ ...
- 数组求最大公约数c语言,C语言辗转相除法求2个数的最小公约数
辗转相除法最大的用途就是用来求两个数的最大公约数. 用(a,b)来表示a和b的最大公约数. 有定理: 已知a,b,c为正整数,若a除以b余c,则(a,b)=(b,c). (证明过程请参考其它资料) 例 ...
- c语言求两个数的最小公倍数辗转相除法,C语言辗转相除法求2个数的最小公约数...
辗转相除法最大的用途就是用来求两个数的最大公约数. 用(a,b)来表示a和b的最大公约数. 有定理: 已知a,b,c为正整数,若a除以b余c,则(a,b)=(b,c). (证明过程请参考其它资料) 例 ...
- 求一个数的最小素数因子序列
** 求一个数的最小素数因子序列 ** 如 120 = 22235,其中2, 2,2,3,5就是120 的最小素数因子 90 = 233*5 ,其中2,3,3,5 就是90 的最小素数因子 具体思路是 ...
- python求三个数中最小(大)的元素
求最小: def getThreeNumberMin(x,y,z):min=x if x<y else ymin=min if min<z else zreturn min a=getTh ...
- 求一个数的最小素因子外加快速分解质因子
这种方法使用与数据小于1e7, 这种适用于分解1到n所有数的质因子,而且打印出来是从小到大排好序的 首先找到每个数的最小质因子,不停的除以最小素因子,只到x==1 如果是分解单个还是根号n复杂度的更好 ...
- 【算法】深度优先搜索遍历的应用 设计算法以求解无向图G的连通分量的个数和无向图G的边数
应用一 设计算法以求解无向图G的连通分量的个数 图示: 深度遍历基本算法dfs(v0)如下 : void dfs(int v0) { visite(v0); visited[v0]=TRUE;w=fi ...
- 一种更简单的求最小平方均值函数(MSE)的方法 -- 梯度下降法。
在上一篇博客中我们通过解析解法算出来了 但是上面公式中的对称阵是N维乘以N维的,复杂度为O(n*n*n),虽然很精准但是很慢. 为此我们引入梯度下降法 我们首先大致画出MSE的图像,MSE是一个开口向 ...
- 求最小码距 (10 分)
求最小码距 (10 分) 代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB 题目描述 计算机组成原理老师给小明出了一道求最小码距的题目, 有以下由1个字节组成的合法编码集{0xA ...
最新文章
- MATLAB 半球面
- linux c socket选项:SO_ERROR
- 学习python用哪个app-Python和R:学哪个好?
- 深度神经网络(DNN)损失函数和激活函数的选择
- 光影的魔法!Cocos Creator 实现屏幕空间的环境光遮蔽(SSAO)
- 使用MiniProfiler跟踪MVC + EF + Bootstrap 2 权限管理系统的性能消耗
- 如何使用SAP CRM中间件下载customer material数据
- 【技术解决方案】音视频同步策略分析并计算出当前音频播放的pts
- 前端学习(2021)vue之电商管理系统电商系统之合并goodlist的分支
- 安装linux出现基础系统出错,Linux系统出错提示信息详解
- 一键设置mac显示选项_如何通过关闭浏览器中的一个选项卡将Mac上的电池寿命延长一倍...
- java8获取当前时间并格式化
- 8成功的用户界面特性
- 基于visual Studio2013解决C语言竞赛题之0203格式化输出
- 前端页面加载速度优化---Ngnix之GZIP压缩
- mariadb配置主从同步遇到的问题
- 用python实现关机程序_python实现重启关机程序
- JAVA博雅楼自习室预约系统计算机毕业设计Mybatis+系统+数据库+调试部署
- cp 出现 omitting directory
- (转)一些个人感悟(2008)