简单的数学问题 洛谷 P1414 又是毕业季II
生活随笔
收集整理的這篇文章主要介紹了
简单的数学问题 洛谷 P1414 又是毕业季II
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
題意
給出n個數字,詢問從中挑出k個數字,最大可能的公共gcd是多少。
題解
k個數的gcd一定出現(xiàn)至少k次。
我們遍歷所有的數并對每個數字求它所有的因子,統(tǒng)計各個因子出現(xiàn)的個數。
給定k時,我們的答案就是所有出現(xiàn)次數>=k的因子的最大值。
代碼
#include <iostream> #include <cstdio> using namespace std; int n; int cnt[1000001]; int ans[1000001]; int main(){scanf("%d",&n);for(int i = 1;i <= n;++i){int tmp;scanf("%d",&tmp);for(int i = 1;i*i <= tmp;++i){if(tmp % i != 0) continue;int p = tmp / i;if(i*i == tmp){cnt[i]++;ans[cnt[i]] = max(ans[cnt[i]],i);} else{cnt[i]++;ans[cnt[i]] = max(ans[cnt[i]],i);cnt[p]++;ans[cnt[p]] = max(ans[cnt[p]],p);}}}for(int i = 1;i <= n;++i){printf("%d\n",ans[i]);}return 0; }總結
以上是生活随笔為你收集整理的简单的数学问题 洛谷 P1414 又是毕业季II的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 科大讯飞回应学习机出现不当内容:已引入更
- 下一篇: 洛谷P1169 树上分组背包