题目链接:http://codeforces.com/contest/1154/problem/G

题意:lcm是最小公倍数,本题就是给你一个数组(可能会重复),要求你判断出那两个数的最小公倍数最小,并输出这两个数的下标

分析:首先想重复,因为重复的话非常好整,最小公倍数就是它自己,所以我们可以先处理一遍,把出现过的重复的数最小的先设为答案(ans)。

另外,记得初始化ans,这里有个坑,记得不要初始化为inf,因为最小公倍数是会爆int的,这点要注意。

然后再开始从1-ans遍历,对于每个数,都不断加倍,来寻找答案,遍历完后输出答案。

注意输出是下标。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int inf=0x3f3f3f3f;//这个数是1e9数量级的,且可以用memset函数
const int maxn=1e7+;
const double pi=acos(-);
const int mod=1e9+;
int idx[maxn];//idx[x]存的是数值x的下标
int main(){
int n;scanf("%d",&n);
int t1=,t2=,x;ll ans=1e14;
for(int i=;i<=n;i++){
scanf("%d",&x);
if(idx[x]){
if(ans>x)
t1=idx[x],t2=i,ans=x;
}
else idx[x]=i;
}
for(int i=;i<=maxn;i++){//因为ans是一直在动态变化的,所以这里终止条件我们设为maxn
if(i>=ans) break;
int s1=,s2=;//s1,s2分别记录接下来循环存在的第一个数的值和下标
for(int j=i;j<=maxn;j+=i){
if(!idx[j]) continue;
if(!s1) s1=j,s2=idx[j];
else{
if(ans>1ll*j*s1/i){//最小公倍数=两数乘积/最大公因数 这里可能会溢出,记得转化
ans=1ll*j*s1/i;
t1=s2,t2=idx[j];
break;
}
}
}
}
if(t1>t2) swap(t1,t2);
cout<<t1<<" "<<t2<<endl;
return ;
}

CF #552(div3)G 最小lcm的更多相关文章

  1. CF #552 div3

    A - Restoring Three Numbers CodeForces - 1154A Polycarp has guessed three positive integers aa, bb a ...

  2. Codeforces #550 (Div3) - G.Two Merged Sequences(dp / 贪心)

    Problem  Codeforces #550 (Div3) - G.Two Merged Sequences Time Limit: 2000 mSec Problem Description T ...

  3. CF #552(div3)F 背包问题

    题目链接:http://codeforces.com/contest/1154/problem/F 题意:一个商店有n个物品,每个物品只能买一次,同时有m种优惠,即一次买够x件后,这x件中最便宜的k件 ...

  4. Codeforces Round #552:G. Minimum Possible LCM

    官方题解是时间复杂度为O(nd)的.这里给出一个简单实现但是时间复杂度为O(NlogN) (N=1e7) 因为 a*b/gcd(a,b)=lcm(a,b) 所以我们可以枚举每一个因子,然后找到存在这个 ...

  5. CF 552 Neko does Maths

    给出两个数a,b 求k     使得 a+k b+k有最小公倍数 a,b同时加上一个非负整数k,使得,a+k,b+k的最小公倍数最小 因为最小公公倍数=x*y / gcd(x,y),所以肯定离不开最大 ...

  6. 【cf contest 1119 G】Get Ready for the Battle

    题目 你有\(n\)个士兵,需要将他们分成\(m\)组,每组可以为0: 现在这些士兵要去攻打\(m\)个敌人,每个敌人的生命值为\(hp_i\) : 一轮游戏中一组士兵选定一个攻打的敌人,敌人生命值- ...

  7. CF #575 Div3

    // 比赛链接:https://codeforces.com/contest/1196 // CF 2019.7.24 // 本想Div3手速场上分,结果卡在C题,掉了不少分. // 自闭了这么久,今 ...

  8. CF 552(div 3) E Two Teams 线段树,模拟链表

    题目链接:http://codeforces.com/contest/1154/problem/E 题意:两个人轮流取最大值与旁边k个数,问最后这所有的数分别被谁给取走了 分析:看这道题一点思路都没有 ...

  9. 【Cf Edu #47 G】Allowed Letters

    这个题大概就是每一个位置都有一个能填字符的限制(一个点集),给出已有的$n$个字符,问能填出的最小字典序的字符串. 总体思路是贪心,每一位尽量选最小的字符. 关键在于判断在某位选了一个字符后,接下来的 ...

随机推荐

  1. pydemo_testMaopuSpider

    import json from multiprocessing import Pool import requests from requests.exceptions import Request ...

  2. Python练习:爬虫练习,从一个提供免费代理的网站中爬取IP地址信息

    西刺代理,http://www.xicidaili.com/,提供免费代理的IP,是爬虫程序的目标网站. 开始写程序 import urllib.requestimport re def open_u ...

  3. Centos7 下yum安装mysql

  4. 无序数组求第k大/第k小的数

    根据http://www.cnblogs.com/zhjp11/archive/2010/02/26/1674227.html 博客中所总结的7种解法,我挑了其中的解法3和解法6进行了实现. 解法3: ...

  5. laravel5.7 migrate 时报错 Specified key was too long error 解决方案

    今天在数据迁移时突然报了 Specified key was too long error 的错,解决掉之后就把这个问题记录下来. 报错原因 Laravel 5.4 +  默认使用 utf8mb4 字 ...

  6. SQL Server 复制表结构以及数据,去除表中重复字段

    --复制另一个数据库中的某张表的结构及数据--select * from Test.dbo.TestTable(查询表中所有数据) --into [表名] 插入当前数据库新表,如果没有该表就创建 se ...

  7. Goland开发工具安装教程

    开发工具: 文本类的编辑器:记事本,notepad,sublime text,atom... 通过命令执行程序 IED:集成开发环境(integrated development environmen ...

  8. Spring boot 配置https 实现java通过https接口访问

    近来公司需要搭建一个https的服务器来调试接口(服务器用的spring boot框架),刚开始接触就是一顿百度,最后发现互联网认可的https安全链接的证书需要去CA认证机构申请,由于是调试阶段就采 ...

  9. Bugku-CTF之Trim的日记本(不要一次就放弃)

    Day19 Trim的日记本 http://123.206.87.240:9002/ hints:不要一次就放弃

  10. Bigger-Mai 养成计划,subprocess模块

    subprocess模块是python从2.4版本开始引入的模块.主要用来取代 一些旧的模块方法,如os.system.os.spawn*.os.popen*.commands.*等.subproce ...