noip2021 报数

【NOIP2021】报数 题解 比较偏向于暴力,不一定是正解,时间再 2s 多一点,最慢的一个跑到 800ms 左右,能过。 阅读详情

报数游戏是一个广为流传的休闲小游戏。参加游戏的每个人要按一定顺序轮流报数,但如果下一个报的数是 7 的倍数,或十进制表示中含有数字 7,就必须跳过这个数,否则就输掉了游戏。

在一个风和日丽的下午,刚刚结束 SPC20nn 比赛的小 r 和小 z 闲得无聊玩起了这个报数游戏。但在只有两个人玩的情况下计算起来还是比较容易的,因此他们玩了很久也没分出胜负。此时小 z 灵光一闪,决定把这个游戏加强:任何一个十进制中含有数字 7 的数,它的所有倍数都不能报出来!

形式化地,设 p(x) 表示 x 的十进制表示中是否含有数字 7,若含有则 p(x)=1,否则 p(x)=0。则一个正整数 x 不能被报出,当且仅当存在正整数 y 和 z ,使得 x=yz 且 p(y)=1。

例如,如果小 r 报出了 6 ,由于 7 不能报,所以小 z 下一个需要报 8;如果小 r 报出了 33,则由于 34=17×2,35=7×5 都不能报,小 z 下一个需要报出 36 ;如果小 r 报出了 69,由于 70∼79 的数都含有 7,小 z 下一个需要报出 80 才行。

现在小 r 的上一个数报出了 x,小 z 想快速算出他下一个数要报多少,不过他很快就发现这个游戏可比原版的游戏难算多了,于是他需要你的帮助。当然,如果小 r 报出的 x 本身是不能报出的,你也要快速反应过来小 r 输了才行。

由于小 r 和小 z 玩了很长时间游戏,你也需要回答小 z 的很多个问题。

输入格式
第一行,一个正整数 T 表示小 z 询问的数量。

接下来 T 行,每行一个正整数 x,表示这一次小 r 报出的数。

输出格式
输出共 T 行,每行一个整数,如果小 r 这一次报出的数是不能报出的,输出 −1,否则输出小 z 下一次报出的数是多少。

样例一
input
4
6
33
69
300

output
8
36
80
-1

explanation
这一组样例的前 3 次询问在题目描述中已有解释。

对于第 4 次询问,由于 300=75×4,而 75 中含有 7 ,所以小 r 直接输掉了游戏。

样例二
input
5
90
99
106
114
169

output
92
100
109
-1
180

数据范围
对于 10% 的数据,T≤10,x≤100。

对于 30% 的数据,T≤100,x≤1000。

对于 50% 的数据,T≤1000,x≤10000。

对于 70% 的数据,T≤10000,x≤2×105。

对于 100% 的数据,1≤T≤2×105,1≤x≤107。

时间限制:1s

空间限制:512MB

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int cas,n,now,x,ans[10000005],p[10000005];
int main()
{
    for(int i=1;i<=10000000;i++)
	{
	    int j=i;
		int ok=1;
		while(j>0)
		{
		    if(j%10==7) 
			{
			    ok=0;
				break;
			}
			j=j/10;
		}
		if(ok==0) //含有7 
		{
			x=i;
			while(x<=10000000)
			{
				p[x]=1;
				x=x+i;
			}	
		}
	}
	now=1;
	for(int i=2;i<=10000001;i++)
	if(p[i]==0) 
	{
		for(int j=now;j<i;j++) ans[j]=i;
		now=i;
	}	
	cin>>cas;
	while(cas--)
	{
	    cin>>n;
		if(p[n]==1) printf("-1\n"); else printf("%d\n",ans[n]);
	}
	return 0;
}
NOIP2021 T1 报数(number)题解 报数(number) 解题思路: 1、将输入存入数组arr中 2、遍历数组,如果该数与7有关,则输出-1,否则就用循环去推算下正确的输出,循环的范围是当前数+1到下一个数-1,第一个与7无关的数就是正确答案,答案存在ans数组中 3、逐行输出ans数组 阅读详情

相关推荐

P7960 [NOIP2021](洛谷) 报数(筛数)

题目传送门 这道题我们只要把十进制下有七的数筛出啦就万事大吉了 类似于埃氏筛 for(int i=1;i<=10000100;i++){ if(a[i]) continue; if(check(i)){ for(int j=i;j<=10000100;j+=i) a[j]=1; continue; } nx[ls]=i; ls=i; } 坑点 数组开大一百左右 因为当X为时 X的下一个数会大于 AC代码 #include<

xingchenyu1的博客 550

【NOIP2021】报数题解

本蒟蒻的第一篇题解 此题作为今年NOIP唯一一道略简单 普及— 难度的题,做法与某种强大的素数筛法(埃氏筛法)雷同,具体做法如下: 我们先来看题目: 如果下一个报的数是 7 的倍数,或十进制表示中含有数字 7,就必须跳过这个数。任何一个十进制中含有数字 7 的数,它的所有倍数都不能报出来。 我们可以发现,这和埃氏筛法的思想很像,其实就是模拟,我们可以用一个vis数组来记录一个数是否应该被跳过。 看代码: void init () { for (int i = 1; i...

ylcpl的博客 1653

题解:洛谷 P7960 [NOIP2021] 报数

在一个风和日丽的下午,刚刚结束 SPC20nn 比赛的小 r 和小 z 闲得无聊玩起了这个报数游戏。,小 z 想快速算出他下一个数要报多少,不过他很快就发现这个游戏可比原版的游戏难算多了,于是他需要你的帮助。当然,如果小 r 报出的 x 本身是不能报出的,你也要快速反应过来小 r 输了才行。由于小 r 和小 z 玩了很长时间游戏,你也需要回答小 z 的很多个问题。行,每行一个整数,如果小 r 这一次报出的数是不能报出的,输出。,否则输出小 z 下一次报出的数是多少。,表示这一次小 r 报出的数。

团爸讲算法 1249

[NOIP2021] 报数

Solution 以预处理出来所有合法的数,用链表保存,每次询问答案就是O(1)的。 预处理的时候可以先把带七的无重复的找出来,具体来说最大为为i的含有七的数字一定由第i位为7的所有数字和前i-1位含有7的所有数字在第i位拼任意数组成,然后根据这些晒掉所有倍数。 Code #include<iostream> #include<cstdio> using namespace std; bool isok[10000005]; int sevens[10000005],cnt,nx

gyp0205的博客 677

SystemRDL:从寄存器描述到自动化生成的完整指南

本文详细介绍了SystemRDL如何通过“一份描述,多处生成”的理念,彻底解决芯片与FPGA设计中手动维护寄存器带来的不一致与低效问题。文章提供了从语言快速上手、核心组件讲解到使用PeakRDL工具链实现自动化代码与文档生成的完整实战指南,帮助硬件工程师构建高效、可靠的寄存器开发流程。

weixin_29243279的博客 660

OSPF路由协议配置

构建直连连通让R1、R2、R3、R4加入OSPF,实现全网互通。掌握OSPF邻居状态的解读。掌握单区域OSPF的配置。理解OSPF的基本概念。AR3上的OSPF配置。AR4上的OSPF配置。R1上的OSPF配置。R2上的OSPF配置。

SURTR999的博客 7697

#P13787. [NOIP2021] 报数

题目描述 报数游戏是一个广为流传的休闲小游戏。参加游戏的每个人要按一定顺序轮流报数,但如果下一个报的数是 77 的倍数,或十进制表示中含有数字 77,就必须跳过这个数,否则就输掉了游戏。 在一个风和日丽的下午,刚刚结束 SPC20nn 比赛的小 r 和小 z 闲得无聊玩起了这个报数游戏。但在只有两个人玩的情况下计算起来还是比较容易的,因此他们玩了很久也没分出胜负。此时小 z 灵光一闪,决定把这个游戏加强:任何一个十进制中含有数字 77 的数,它的所有倍数都不能报出来! 形式化地,设 p(x)p(x) 表

weq2011的博客 748

SpringAi 通过大模型来实现调用自己的Api

摘要 本文介绍了如何利用Spring AI的Tools机制扩展大模型能力,实现业务系统集成。通过@Tool和@ToolParam注解定义工具方法,将订单查询和关闭功能暴露给大模型调用。关键实现包括:1)使用详细描述标注工具方法和参数;2)在ChatClient中注册工具服务;3)集成对话记忆保持上下文。该方法使AI具备操作业务系统的能力,形成"认知-决策-执行"闭环,大幅提升了模型在实际业务场景中的应用价值。

又要搬砖了 838

C++详解NOI题:[NOIP2021] 报数

受不了优快云每日一练的在线竞赛系统了,bug多就算了,勉强能用,可那些题目的神描述,到处是错。所以找点别的题来玩,看到一道NOI的题挺有意思,就试着解解。

攻城狮的博客 1275

计算机视觉-全景图像拼接中的特征匹配与优化策略

本文深入探讨了计算机视觉中全景图像拼接的核心技术,重点解析了特征匹配后的关键优化策略。通过SIFT特征提取、RANSAC算法剔除误匹配,并结合APAP算法应对视差与鬼影问题,详细阐述了从基础对齐到无缝融合的完整流程,为开发者实现高质量全景拼接提供了实用指南。

weixin_29039773的博客 361

opencode : 无法将“opencode“项识别为 cmdlet、函数、脚本文件或可运行程序的名称 解决方案

opencode命令识别问题与openclawcodexgemini确保的路径在 PATH 中。这个知识对所有 npm 全局工具通用。

一键难忘的博客 4521

【真题T1】[NOIP2021] 报数

既然题目说7以及带7的十进制的倍数不能报。那我们提前预处理,把这些数标记一下就可以了。在过程中我们顺带记录一下,每个数的数组指向下一个成立的数。

SY奇星的OI博客 529

飞牛fnNAS虚拟机开启OVS导致失联的解决

摘要:用户在使用飞牛NAS时发现开启OVS网络功能后导致NAS失联。通过多种尝试(包括开关OVS、更换系统版本、手工配置、更换网卡、处理器检查等)后发现,OVS启用状态下DHCP无法获取IP地址,手动设置IP可暂时恢复网络。但重启后问题依旧,初步判断为OVS功能存在bug。目前临时解决方案是在需要时手动开关OVS,或考虑其他虚拟化方案。用户计划后续探索替代方案,并等待官方修复该问题。

dgnankai的专栏 4336

洛谷 P7960 [NOIP2021] 报数

报数游戏是一个广为流传的休闲小游戏。参加游戏的每个人要按一定顺序轮流报数,但如果下一个报的数是7的倍数,或十进制表示中含有数字7,就必须跳过这个数,否则就输掉了游戏。在一个风和日丽的下午,刚刚结束 SPC20nn 比赛的小 r 和小 z 闲得无聊玩起了这个报数游戏。但在只有两个人玩的情况下计算起来还是比较容易的,因此他们玩了很久也没分出胜负。此时小 z 灵光一闪,决定把这个游戏加强:任何一个十进制中含有数字7的数,它的所有倍数都不能报出来!形式化地,设p(x)表示x的十进制表示中是否含有数字7,若含有则不

月半流苏的博客 765

【深度学习新浪潮】智能体在图像处理领域的技术突破与实践指南

智能体正在重构图像处理的技术版图:从多智能体分工的"专业化协作",到多模态统一的"极简架构",再到工具增强的"实战能力",技术突破不断降低开发门槛并拓展应用边界。对于开发者而言,2025年的核心机遇在于结合具体场景选择成熟框架(如医疗用IteR-MRL、工业用NVIDIA NIM),通过微调与工具集成快速落地解决方案。随着硬件成本下降与开源生态完善,图像处理智能体将从当前的"高端场景赋能"走向"千行百业普及",真正成为数字世界的"视觉感知与操作核心"。

专注:太空算力、AI infra、异构调度、大模型成本工程 439

1、机器学习在环境科学中的应用与经典数据分析基础

本文介绍了机器学习在环境科学中的广泛应用,包括卫星遥感、气候预测、空气质量预报等领域,并系统回顾了经典数据分析的基本概念,如期望、方差、协方差和相关性及其显著性检验。同时,文章阐述了贝叶斯定理、判别函数与分类、聚类分析等方法的原理与应用,强调了经典统计方法与机器学习技术的互补关系。最后展望了未来环境科学中数据分析的发展方向,强调多学科融合与方法创新的重要性。

stone的博客 145

P7960 [NOIP2021] 报数

原题直通车 大意: 看输入的这个数是否和 7 有关(7的倍数和含有7的倍数),若有关,则输出 -1,否则输出大于这个数且第一个和 7 无关的数。 思路:埃氏筛+判断本身 埃氏筛:找到一个未被记过的数,把它的倍数都登记一遍。 判断本身:把数字的每位都拆出来,判断是否含有 7。 做完这两个后就能保证正确性。因为本身含有 7 的都被筛掉了,它的倍数也就没了,根据题目大意所有不满足要求的数就都被筛完了! 代码: #include<bits/stdc++.h> using namespace std; i

luozhichen的博客 703

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

NOIP2021 T1 报数

  传送门:NOIP2021 T1 题目大意 报数游戏是一个广为流传的休闲小游戏。参加游戏的每个人要按一定顺序轮流报数,但如果下一个报的数是 7 的倍数,或十进制表示中含有数字 7,就必须跳过这个数,否则就输掉了游戏。 在一个风和日丽的下午,刚刚结束 SPC20nn 比赛的小 r 和小 z 闲得无聊玩起了这个报数游戏。但在只有两个人玩的情况下计算起来还是比较容易的,因此他们玩了很久也没分出胜负。此时小 z 灵光一闪,决定把这个游戏加强:任何一个十进制中含有数字 7 的数,它的所有倍数都不能报出来! 形式化地

ID246783的博客 4894

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

[NOIP2021] 报数 题解

NOIP2021 T1题解

lcx0128的博客 576

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

打卡信奥刷题(1676)用C++实现信奥 P7960 [NOIP2021] 报数

题目摘要:这是一个关于报数游戏的编程题。游戏规则是:若某数含数字7或是含7数的倍数,则不能报出。给定T次询问,每次输入x,若x不能被报出则输出-1,否则输出下一个可报的数。数据范围较大(T≤2×10^5,x≤10^7),需要高效预处理解法。 算法核心:通过预处理筛法标记所有不能报的数,并记录可报数的顺序。对于每次查询,直接查表判断x是否被标记,若未被标记则输出下一个可报的数。该解法利用筛法思想,时间复杂度O(n log n),能够高效处理大规模数据。

Loge谈信奥--一个专注于信奥人的博客 1420

【luogu P7960】【二分】 [NOIP2021] 报数【民间数据】

先纯暴力处理出有哪些数num[] 是可以选的,给出一个x,在 num[] 中二分大于等于x的数,答案为num[ans+1]

蒟蒻的OI路 3570

洛谷P7960 [NOIP2021] 报数

现在小 r 的上一个数报出了 x,小 z 想快速算出他下一个数要报多少,不过他很快就发现这个游戏可比原版的游戏难算多了,于是他需要你的帮助。形式化地,设 p(x) 表示 x 的十进制表示中是否含有数字 7,若含有则 p(x)=1,否则 p(x)=0。参加游戏的每个人要按一定顺序轮流报数,但如果下一个报的数是 7 的倍数,或十进制表示中含有数字 7,就必须跳过这个数,否则就输掉了游戏。输出共 T 行,每行一个整数,如果小 r 这一次报出的数是不能报出的,输出 −1,否则输出小 z 下一次报出的数是多少。

wxz_y的博客 1019

信息学奥赛一本通 2082:【21NOIP提高组】报数 | 洛谷 P7960 [NOIP2021] 报数

类比判断多次询问的数字是不是质数的问题,可以通过筛法求质数表,而后询问的方法来减少复杂度。简单说成:判断某数字的因数中是否包含7。否则,要输出x的下一个因数包含7的数字。表示数字i的下一个因数不包含7的数字。次的询问,如果预先确定了每个可能的数字的的因数中是否包含7,那么每次询问的复杂度为。根据新的规则,任何一个十进制中某一位含有7的数字的倍数都不能报出来。是一个因数不包含7的数字,它的下一个因数不包含7的数字是。在生成该数组后,x的下一个因数不包含7的数字就是。对于输入的x,如果x的因数包含7,即。

君义NOIP的博客 1510
上一篇: noip2018
ACTY
博客等级 码龄12年 21粉丝 142原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值