Codeforces 757 B Bash's Big Day
2017-01-13 13:35
281 查看
Bash has set out on a journey to become the greatest Pokemon master. To get his first Pokemon, he went to Professor Zulu's Lab. Since Bash is Professor Zulu's favourite student, Zulu allows him to take as many Pokemon from his lab as he pleases.
But Zulu warns him that a group of k > 1 Pokemon with strengths {s1, s2, s3, ..., sk} tend
to fight among each other if gcd(s1, s2, s3, ..., sk) = 1 (see
notes for gcd definition).
Bash, being smart, does not want his Pokemon to fight among each other. However, he also wants to maximize the number of Pokemon he takes from the lab. Can you help Bash find out the maximum number of Pokemon he can take?
Note: A Pokemon cannot fight with itself.
Input
The input consists of two lines.
The first line contains an integer n (1 ≤ n ≤ 105),
the number of Pokemon in the lab.
The next line contains n space separated integers, where the i-th
of them denotes si (1 ≤ si ≤ 105),
the strength of the i-th Pokemon.
Output
Print single integer — the maximum number of Pokemons Bash can take.
Examples
input
output
input
output
Note
gcd (greatest common divisor) of positive integers set {a1, a2, ..., an} is
the maximum positive integer that divides all the integers {a1, a2, ..., an}.
In the first sample, we can take Pokemons with strengths {2, 4} since gcd(2, 4) = 2.
In the second sample, we can take Pokemons with strengths {2, 4, 6}, and there is no larger group with gcd ≠ 1.
题目大意:给你一串数,让你从中间挑出最多有几个数,他们的最大公因子数且不为1.
题目分析:直接枚举,不过貌似有个坑点,就是那个如果是给的数都是1的话,答案就是1.#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <queue>
#include <cmath>
using namespace std;
const int maxn = 100005;
int s[maxn];
int main(){
int n;
int k,m;
while((scanf("%d",&n))!=EOF){
memset(s,0,sizeof(s));
for(int i=1;i<=n;i++){
scanf("%d",&k);
int j=1;
for(;j*j<k;j++){
if(k % j == 0){
s[j]++;
s[k/j]++;
}
}
if(j*j == k)
s[j]++;
}
int ans=1;
for(int i=2; i<=maxn; i++)
ans=max(ans,s[i]);
printf("%d\n",ans);
}
return 0;
}
But Zulu warns him that a group of k > 1 Pokemon with strengths {s1, s2, s3, ..., sk} tend
to fight among each other if gcd(s1, s2, s3, ..., sk) = 1 (see
notes for gcd definition).
Bash, being smart, does not want his Pokemon to fight among each other. However, he also wants to maximize the number of Pokemon he takes from the lab. Can you help Bash find out the maximum number of Pokemon he can take?
Note: A Pokemon cannot fight with itself.
Input
The input consists of two lines.
The first line contains an integer n (1 ≤ n ≤ 105),
the number of Pokemon in the lab.
The next line contains n space separated integers, where the i-th
of them denotes si (1 ≤ si ≤ 105),
the strength of the i-th Pokemon.
Output
Print single integer — the maximum number of Pokemons Bash can take.
Examples
input
3 2 3 4
output
2
input
5 2 3 4 6 7
output
3
Note
gcd (greatest common divisor) of positive integers set {a1, a2, ..., an} is
the maximum positive integer that divides all the integers {a1, a2, ..., an}.
In the first sample, we can take Pokemons with strengths {2, 4} since gcd(2, 4) = 2.
In the second sample, we can take Pokemons with strengths {2, 4, 6}, and there is no larger group with gcd ≠ 1.
题目大意:给你一串数,让你从中间挑出最多有几个数,他们的最大公因子数且不为1.
题目分析:直接枚举,不过貌似有个坑点,就是那个如果是给的数都是1的话,答案就是1.#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <queue>
#include <cmath>
using namespace std;
const int maxn = 100005;
int s[maxn];
int main(){
int n;
int k,m;
while((scanf("%d",&n))!=EOF){
memset(s,0,sizeof(s));
for(int i=1;i<=n;i++){
scanf("%d",&k);
int j=1;
for(;j*j<k;j++){
if(k % j == 0){
s[j]++;
s[k/j]++;
}
}
if(j*j == k)
s[j]++;
}
int ans=1;
for(int i=2; i<=maxn; i++)
ans=max(ans,s[i]);
printf("%d\n",ans);
}
return 0;
}
相关文章推荐
- Codeforces 757 B Bash's Big Day
- shell_链接命令ln与nohup命令使用方法
- shell脚本中单引号和双引号
- shell split文件分割方法
- Bash Shell常用快捷键
- Codecraft-17 and Codeforces Round #391 (Div. 1 + Div. 2, combined) B - Bash's Big Day 枚举
- SHELLEXECUTEINFO 结构详解
- Linux Shell脚本去掉几类常见文件中的注释
- linux 中的局部变量、全局变量、shell 变量的总结
- GroovyShell 脚本应用
- linux shell 字符串操作(长度,查找,替换,匹配)详解
- Linux Shell 之 Shell中的函数调用
- /bin/bash^M: 坏的解释器: 没那个文件或目录(bad interpreter: No such file or directory)
- Linux shell 的 test 命令用法详解
- codeforces 757 B. Bash's Big Day
- Codecraft-17 and Codeforces Round #391 (Div. 1 + Div. 2, combined) B. Bash's Big Day(分拆素因子+求最多的公因子)
- linux下Shell命令别名设置
- bash的基础特性
- mac 生成 ssh-key
- CentOS上-bash: vim: command not found问题解决