U228120 八佬上厕所

题目来源

此题目是由本人岳阳楼蒟蒻写的,但因为鄙人不知如何实名认证,所以没正式发布
洛谷传送门

题目背景

八佬是一个初中生,在他们5班,有一个佬教。
他们的口号是"别那么啊!"“草色入(年轻)怕重”
这些人都讽刺八佬,所以八佬上厕所都要避着他们。

还有八佬喜欢质数,喜欢挑质数号的厕所间

题目描述

给定 N N N个厕所间,给定厕所间: A 1 . A 2 . . . A n A_{1}.A_{2}...A_{n} A1.A2...An的人数,当 A i A_{i} Ai的人数大于 2 2 2(不含 2 2 2),就是 A i > 2 A_{i}>2 Ai>2时,八佬就不去那个厕所间,八佬还会仔细挑厕所间,选号数 i i i为质数的厕所间。

因为八佬没开天眼,看不见有多少人在厕所间,所以请你帮忙挑出全部,如果没有那么告诉八佬"None"。

输入格式

N N N

A 1 , A 2 . . . A N A_{1} ,A_{2}...A_{N} A1,A2...AN

输出格式

K 1 K_{1} K1

K 2 K_{2} K2

o r or or None

样例

样例输入1

4
3 4 2 1

样例输出1

3

样例输入2

5
9 7 4 1 3

样例输出2

None

提示

样例 1 : 1: 1: 3 , 4 3,4 34号厕所人少,又因为 3 3 3为质数,所以输出 3 3 3

样例 2 : 2: 2: 4 4 4号厕所人少,又因 4 4 4不是质数,所以输出None

0 ≤ N ≤ 1 0 6 0\le N\le10^6 0N106

0 ≤ A i ≤ 1 0 5 0 \le A_{i} \le 10^{5} 0Ai105

解释

鄙人思路

首先看人数,然后看厕所的号码,最后输出号码 / i / i /i

代码

#include<bits/stdc++.h>
using namespace std;
long long n,a[1000005];
int main() {
	bool f=0,flag[1000005];
	ios::sync_with_stdio(false);
	cin>>n;
	for(int i=1; i<=n; i++) {
		cin>>a[i];
	}
	int sqrt_n=sqrt(n);
	for(int i=2; i<=sqrt_n; i++) {//线性筛
		int n_i=n/i;
		if(!flag[i])
			for(int j=i; j<=n_i; j++)
				flag[i*j]=true;
	}
	for(int i=2; i<=n; i++) {
		if(!flag[i] && a[i]<=2) {
			cout<<i<<"\n";
			f=1;
		}
	}
	if(!f)
		cout<<"None\n";
	return 0;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值