题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2257

以两个瓶子为例,可以倒出它们的差,这是它们容量的gcd的倍数。

k个瓶子就可以倒出它们容量的gcd的倍数。

由裴蜀定理得可以倒出它们的gcd。所以找出k个数使它们的gcd最大。

一个很妙的方法:把每个容量因数分解,从大到小排序,第一个个数>=k的因数(最大的 >=k个容量拥有它的)就是答案。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
const int N=1e8+;
priority_queue<int> q;
int n,k,x;
int main()
{
scanf("%d%d",&n,&k);
while(n--)
{
scanf("%d",&x);
for(int i=;i*i<=x;i++)
if(x%i==)q.push(i),q.push(x/i);
}
while()
{
x=q.top();q.pop();int cnt=;
while(q.top()==x&&q.size())q.pop(),cnt++;
if(cnt>=k)
{
printf("%d",x);return ;
}
}
}

最新文章

  1. cryptkeeper的使用
  2. Linux C/C++的编译
  3. APU平台DirectX 12性能测试:超级大惊喜!
  4. Exchange Server简介与搭建
  5. 六、saltstack的module组件
  6. 5事件DOM零级事件跟DOM二级事件
  7. mongodb的地理空间索引常见的问题
  8. python调win32api调整屏幕分辨率
  9. hdu 4107当卡段树
  10. LeetCode Weekly Contest 47
  11. 关于python2.7从数据库读取中文显示乱码的问题解决
  12. iOS - Swift Enumerations or how to annoy Tom
  13. MySQL学习6 - 完整性约束
  14. PHP实现类似题库抽题效果
  15. 最短路径(给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明:每次只能向下或者向右移动一步。)
  16. ADT下载地址(申明:来源于网络)
  17. go基础知识之变量,类型,常量,函数
  18. SQL Server复制入门(二)----复制的几种模式 (转载)
  19. Jmeter发送某个request时而成功,时而失败(处理办法:失败的时候尝试重新发送这个HTTP request)
  20. Paper Reading - Im2Text: Describing Images Using 1 Million Captioned Photographs ( NIPS 2011 )

热门文章

  1. 关于Redis命令keys在性能方面的说明
  2. angular6开发不完全笔记(一) -- ng-cli
  3. SwitchyOmega 设置修改代理
  4. [BZOJ1877][SDOI2009]SuperGCD
  5. C++总结:C++中的const和constexpr
  6. SSH基本管理和配置文件的使用
  7. classloader的演进
  8. webpack+angular2开发环境搭建
  9. Vue.js 计算属性是什么
  10. hdu2177威佐夫博弈