NOIP 2021

虽然没参加,但是还是记录一下。(只会t1)

t1

#include <iostream>
#include <stdio.h>
#include <cstring>
#include <algorithm>
using namespace std;
const int N=1e7+9;
int t,a,cnt;
bool vis[10000020];
int idx[10000020];
int nex[10000020];
void d(){//类似于素数筛
	for(int i=7;i<=10;i++){
		if(i==7){
			for(int j=1;j<=N/i;j++){
				vis[i*j]=1;
			}
		}
	}
	for(int i=10;i<=100;i++){
		if(i%10==7||i/10==7){
			for(int j=1;j<=N/i;j++){
				vis[i*j]=1;
			}
		}
	}
	for(int i=101;i<=1000;i++){
		if(i%10==7||i/10%10==7||i/100==7){
			for(int j=1;j<=N/i;j++){
				vis[i*j]=1;
			}
		}
	}
	for(int i=1001;i<=10000;i++){
		if(i%10==7||i/10%10==7||i/100%10==7||i/1000==7){
			for(int j=1;j<=N/i;j++){
				vis[i*j]=1;
			}
		}
	}
	for(int i=10001;i<=100000;i++){
		if(i%10==7||i/10%10==7||i/100%10==7||i/1000%10==7||i/10000==7){
			for(int j=1;j<=N/i;j++){
				vis[i*j]=1;
			}
		}
	}
	for(int i=100001;i<=1000000;i++){
		if(i%10==7||i/10%10==7||i/100%10==7||i/1000%10==7||i/10000%10==7||i/100000==7){
			for(int j=1;j<=N/i;j++){
				vis[i*j]=1;
			}
		}
	}
	for(int i=1000001;i<=10000000;i++){
		if(i%10==7||i/10%10==7||i/100%10==7||i/1000%10==7||i/10000%10==7||i/100000%10==7||i/1000000==7){
			for(int j=1;j<=N/i;j++){
				vis[i*j]=1;
			}
		}
	}
}
int main(){
	d();
	nex[1]=2;
	cnt=1;
	for(int i=2;i<=10000019;i++){ //开了O2优化后数组要注意不能越界,否则编译时就会报错
		if(!vis[i]) nex[cnt]=i,cnt=i;//O(N)的扫一遍,预处理,否则会超时
	}
	scanf("%d",&t);
	while(t--){
		scanf("%d",&a);
		if(vis[a]) printf("-1\n");
		else {
			printf("%d\n",nex[a]);//O(1)的查询输出答案
		}
	}
}
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇