《CF757B Bash‘s Big Day》
2026/6/7 15:04:50 网站建设 项目流程

题目描述

Bash 已经踏上了成为最伟大的口袋妖怪大师的旅程。为了得到他的第一个口袋妖怪,他去了 Zulu 教授的实验室。由于 Bash 是 Zulu 教授最喜欢的学生,Zulu 允许他从实验室里取出任意数量的口袋妖怪。

但是 Zulu 警告他,每个小精灵都有一个力量值,例如 k(k>1) 个小精灵在一起,它们的力量值为 s1​,s2​,…,sk​,如果 gcd(s1​,s2​,…sk​)=1(见 gcd 的定义注释),它们之间就会互相打架。

Bash 作为一个聪明的人,不希望他的口袋妖怪互相斗争。然而,他也想最大化他从实验室里带走的神奇宝贝的数量。你能帮 Bash 找出他能带走的最大数量的口袋妖怪吗?

注意:口袋妖怪不能与自己战斗。

输入格式

输入包含两行。

第一行一个整数 n(1≤n≤105),表示实验室中的小精灵总数。

第二行 n 个用空格隔开的整数,第 i 个整数代表第 i 个小精灵的力量值 si​(1≤si​≤105)。

输出格式

一行包含一个整数,表示能拿走的小精灵数量最大值。

显示翻译

题意翻译

输入输出样例

输入 #1复制

3 2 3 4

输出 #1复制

2

输入 #2复制

5 2 3 4 6 7

输出 #2复制

3

代码实现;

#include<bits/stdc++.h> using namespace std; int n, mx; map<int,int> mp; int main () { mp.clear(); scanf("%d",&n); for(register int i=1;i<=n;++i) { int x; scanf("%d",&x); mx = max(mx, x); for(register int j=1;j<=sqrt(x);++j) { if(x%j == 0) { mp[j]++; if(x/j != j) { mp[x/j]++; } } } } int res = 1; for(register int i=2;i<=mx;++i) { res = max(res, mp[i]); } printf("%d",res); return 0*puts(""); }

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询