[JSOI2009]瓶子和燃料【数论】
Pro
QwQ
Sol
手推几组数据就可以发现:答案即为k个数的gcd
所以爆搜出k个出,再暴力求gcd可以过部分数据……
正解好像和裴蜀定理有关:把n个数的因子都求出来,找出满足因子个数大于等于k的最大因子即为答案。
Code
爆搜代码
#include<iostream>
#include<cstdio>
using namespace std;int n , k , v[1005] , stack[1005] , top , ans;
inline int mymax(int a , int b) { return a>b?a:b; }inline int gcd(int x , int y) {while(y) {int t = x%y;x = y;y = t;}return x;
}int qgcd() {int res = gcd(stack[1] , stack[2]);for(int i=3; i<=top; i++)res = gcd(res , stack[i]);return res;
}void dfs(int pre , int use , int aim) {if(use==aim) {ans = mymax(ans , qgcd());return ;}for(int i=pre+1; i<=n; i++) {stack[++top] = v[i];dfs(i , use+1 , aim);top--;}
}int main() {scanf("%d%d",&n,&k);for(int i=1; i<=n; i++)scanf("%d",&v[i]);dfs(0 , 0 , k);printf("%d",ans);return 0;
}
正解代码
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;int n , k , num[1000005] , top , cnt = 1;void sol(int x) {for(int i=1; i<=sqrt(x); i++) {if(x%i==0) {num[++top] = i;if(i*i!=x)num[++top] = x/i;}}
}int main() {scanf("%d%d",&n,&k);for(int i=1; i<=n; i++) {int x;scanf("%d",&x);sol(x);}sort(num+1 , num+top+1);for(int i=top-1; i; i--) {if(num[i]==num[i+1])cnt++;elsecnt = 1;if(cnt>=k) {printf("%d",num[i]);return 0;}}return 0;
}
[JSOI2009]瓶子和燃料【数论】相关推荐
- bzoj 2257[Jsoi2009]瓶子和燃料 数论/裴蜀定理
题目 Description jyy就一直想着尽快回地球,可惜他飞船的燃料不够了. 有一天他又去向火星人要燃料,这次火星人答应了,要jyy用飞船上的瓶子来换.jyy 的飞船上共有 N个瓶子(1< ...
- [luogu4571 JSOI2009] 瓶子和燃料 (数论)
传送门 Solution 题目说的很迷,但可以发现两个瓶子互相倒最少是容积的gcd 那么题目就转化为求其中选k个瓶子gcd的最大值,这个可以分解因数,枚举因数得到 Code //By Menteur_ ...
- BZOJ 2257: [Jsoi2009]瓶子和燃料【数论:裴蜀定理】
2257: [Jsoi2009]瓶子和燃料 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1326 Solved: 815 [Submit][St ...
- bzoj 2257: [Jsoi2009]瓶子和燃料(裴蜀定理)
2257: [Jsoi2009]瓶子和燃料 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1342 Solved: 823 [Submit][St ...
- BZOJ 2257: [Jsoi2009]瓶子和燃料
题目大意: 有n个数,选择k个数,最大化这些数通过加减能得到的最小的正整数. 题解: 这些数通过加减能得到的最小的数为他们的最大公约数. 题目要求n个数字中选择k个使得他们的最大公约数最大. 枚举所有 ...
- bzoj2257瓶子与燃料——最大公约数
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2257 可以知道最终能够导出的燃料一定是瓶子容量的gcd的倍数,所以此题转化为求n个数中k个数 ...
- (裴蜀定理)ax + by = m 有解,当且仅当 m 是 gcd(a,b) 的倍数
简介:在数论中,裴蜀定理是一个关于最大公约数(或最大公约式)的定理.裴蜀定理得名于法国数学家艾蒂安·裴蜀,说明了对任 何整数a.b和它们的最大公约数d,关于未知数x和y的线性丢 ...
- 2019.4.summary
2019.4.1 BZOJ1061: [Noi2008]志愿者招募 真心有点难QAQ https://www.byvoid.com/zhs/blog/noi-2008-employee 看void爷的 ...
- CodeChef DGCD Dynamic GCD
CodeChef题面 Time limit 210 ms Code length Limit //内存限制也不说一下,真是的-- 50000 B OS Linux Language limit C, ...
最新文章
- 自然语言处理(NLP)历史中的6个主要时期你知道吗?
- 常用的CSS命名规则
- UA MATH571B 试验设计VI 随机效应与混合效应4 裂区设计
- PAT甲级1142 Maximal Clique :[C++题解]图论、最大团、枚举
- Java web—Cookie与Session对象
- 如何打造智能化的员工出行方式?阿里自研出行神器首次曝光
- 深入剖析nginx时间缓存
- Android 蹲坑的疑难杂症集锦一
- HLS:@E Simulation failed SIGSEGV
- Exchange server 2007 出现“0x8004010F”错误的解决办法
- vue window.location.href 返回页面不刷新_前端框架vue中的keep-alive总结实践
- puml绘制思维导图_免费在线思维导图神器 简单又漂亮 比Wodrd好用很多
- ffmpeg 命令实现h264文件 与 mp4 文件的转换
- Python 列表元素的排序
- 附表和附注_现金流量表附注怎么填?现金流量表附表的编制
- Paper-9 精读VAIL (2019 ICLR)
- Linux SPI设备驱动
- Oracle12c DBCA方式创建数据库
- 网站开启https后很慢_网站开启https后地址栏安全锁灰色或黄色叹号
- 记一次无意间发现某学校图书检索系统的变量覆盖漏洞