CSP-J 复赛 模拟题7 and 解析

news2024/9/25 3:24:09

1.超级素数:

题目描述

素数,又称质数,是指除 11 和其自身之外,没有其他约数的正整数。例如 2,3,5,132,3,5,13 都是素数,而 4,9,12,184,9,12,18 则不是。特别地,规定 11 不是素数(因此自然数的质因数分解就是唯一的)。

如果一个数字的任意前缀所对应的数字都是一个素数,那么我们称这个数字是一个超级素数,例如:

233233是一个超级素数,因为它的三个不同的前缀2,23,2332,23,233都是素数。

而457457本身虽然是一个素数,但是它的前缀4,454,45却不是素数,所以457457不是一个超级素数。

现在给出一个范围[l,r],请你求出在这个范围内所有的超级素数。

输入格式

输入仅一行,两个整数l,r表示题目所给的范围。

输出格式

输出所有在[l,r]范围内的超级素数,每两个数字之间用空格隔开。

输入输出样例

输入 #1

6 30
 

输出 #1

7
23
29

 

输入 #2

20000 30000
 

输出 #2

23333
23339
23399
23993
29399
 

说明/提示

样例解释:

在6∼306∼30范围内的素数有7,11,13,17,19,23,297,11,13,17,19,23,29,但11,13,17,1911,13,17,19由于包含前缀11,而11不是质数,所以这四个数字都不是超级素数,剩余的7,23,297,23,29则满足超级素数的性质。

数据范围:

对于30%30%的数据,保证1≤l≤r≤100.

对于100%的数据,保证1≤l≤r≤5⋅104,且范围内一定有解。

此题为水题,不讲解

根据无解析写代码1:

#include <bits/stdc++.h>
using namespace std;
int l,r,a[50005];
int main()
{
	cin >> l >> r;
	for(int i = l;i <= r;i++)
	{
		int x = i;
		bool flag = true;
		while(x > 0)
		{
			if (x == 1)
			{
				flag = false;
				break;
			}
			for(int j = 2;j < x;j++)
			{
				if (x % 2 == 0)
				{
					flag = false;
					break;
				}
				if (x % j == 0)
				{
					flag = false;
					break;
				}
			}
			if (flag == false)
				break;
			x /= 10;
		}
		if (flag)
			cout << i << "\n";
	}
	return 0;
}

2.点球大战:

题目描述

2024奥运会将要来临,作为世界第一运动,足球也逃不过被出城题目的命运。

现在需要你来模拟一场惊险刺激的点球大战,假设对阵的双方为A和B,点球大战中,双方会按照ABABABABAB的顺序要罚点球,点球罚进则本队加一分,没有罚进也不会扣分。

判断点球大战胜负的规则为得分多者获胜,而如果在某一队罚玩某一球之后,当前双方比分已经使得无论之后的罚球结果如何都不会影响比赛的结果,则此时比赛结束。

现在,给出接下来双方1010个点球的结果,你需要判断点球大战会在第几球时结束,或指出1010球之内两队无法分出胜负。

输入格式

输入第一行,一个整数T表示多组数据。

接下来T行,每行一个长度为1010,且仅由0,10,1构成的字符串,其中第i个字符表示第i次点球的结果,11表示罚进,00表示没有罚进。

输出格式

输出共T行,每行一个整数,表示点球大战会在第几回合结束;如果1010次点球之后没有分出胜负,则输出−1−1。

输入输出样例

输入 #1

3
1111111111
1111111110
0101011010
 

输出 #1

-1
10
6

说明/提示

样例解释:

对于第一组数据,双方在前10轮一直打平,无法判断胜负。

对于第二组数据,双方在前8轮一直打平,第9轮A队罚进而第10轮B队没有罚进导致输球,所以在第1010回合才能决出胜负。

数据范围:

对于100%的数据,保证n≤100.

直接在循环里每次算出A的值和B的值,然后回合减减
接着判断a - b > rb || b - a > ra     如果是true,就输出i+1  flag标记为0

最后flag=1时,输出-1

根据解析写代码2:

#include <bits/stdc++.h>
using namespace std;
int n,ta,tb;
string s;
int main()
{
	cin >> n;
	while(n--)
	{
		int a = 0,b = 0,ra = 5,rb = 5;
		bool flag = true;
		cin >> s;
		for(int i = 0;i < 10;i ++)
		{
			if (i % 2 == 0)
			{
				a += (s[i] == '1');
				ra--;
			}
			else
			{
				b += (s[i] == '1');
				rb--;
			}
			if (a - b > rb || b - a > ra)
			{
				cout << i + 1 << "\n";
				flag = false;
				break;
			}
		}
		if (flag)
			cout << "-1\n";
	}
	return 0;
} 

3.生成序列:

题目描述

数列 a 最开始只有一个数 11,你可以进行若干次操作,每次操作你可以选取 k 个数(k 无限制,小于等于 a 的大小即可),将这 k 个数的和放入 a 的任意一个位置。

给定一个长度为 n 的序列 c,你需要回答 a 能否在进行若干次操作后转为 c。

输入格式

  • 第一行,一个正整数T表示多组数据。

接下来T组数据,每组数据分两行:

  • 每组数据第一行,一个整数n表示需要生成的序列长度。

  • 每组数据第二行,n个整数1,2,...,c1​,c2​,...,cn​表示需要生成的序列。

输出格式

输出共T行,每行表示对一组数据的回答,YES表示可以得到,NO表示无法得到.

输入输出样例

输入 #1

4
5
5 1 3 2 1
5
7 1 5 2 1
3
1 1 1
5
1 1 4 2 1
 

输出 #1

YES
NO
YES
YES
 

说明/提示

样例解释:

对于第一组数据,可以按照如下过程生成序列c:

{1}→{1,1}→{1,2,1}→{1,3,2,1}→{5,1,3,2,1}{1}→{1,1}→{1,2,1}→{1,3,2,1}→{5,1,3,2,1}

对于第二组数据,按照如下过程:

{1}→{1,1}→{1,2,1}{1}→{1,1}→{1,2,1}之后无法得到下一个数字55,所以无法得到c序列。

数据范围:

对于30%的数据,保证n≤20.

对于50%的数据,保证n≤10^2,ci​≤10^2.

对于80%的数据,保证n≤10^4,ci​≤10^4.

对于100%的数据,保证T≤10,n≤10^5,∑n≤2⋅10^5,1≤ci​≤10^5.

先把a数组排序好后,判断如果a[i]>前i项的值,就是NO

根据解析写代码3:

#include <bits/stdc++.h>
using namespace std;
long long a[101010];
int main(){
	int t;
	cin>>t;
	int n;
	while(t--){
		bool flag=0;
		cin>>n;
		for(int i=1;i<=n;i++){
			cin>>a[i];
		}
		
		sort(a+1,a+1+n);
		long long ans=a[1];
		if(a[1]!=1){
			cout<<-1<<'\n';
			continue;
		}
		for(int i=2;i<=n;i++){
			 
			if(a[i]>ans){
				flag=1;
				break;
			}
			ans+=a[i];
		}
		if(flag==0){
			cout<<"YES\n";
		} else{
			cout<<"NO\n";
		}
	}
	return 0;
} 

4.方程求解:

题目描述

小明很喜欢解方程。

这一天,小明的数学老师给了他一个看起来很复杂的方程:

a×x1^2​+b×x2^2​+c×x3^2​+d×x4^2​=0

在这个方程中,a,b,c,d均为给定的[−50,50]范围内的整数,x1​,x2​,x3​,x4​是待求解的未知量.

请你求出满足上述方程的(x1​,x2​,x3​,x4​)的解的个数,还需要保证xi​是[−100,100]范围内的非零整数。

输入格式

  • 第一行,一个正整数T,表示多组数据

接下来的T行:

  • 每行四个整数a,b,c,d表示方程的系数。

输出格式

输出共T行:

第i行一个整数,表示对于第i个方程,解的个数

输入输出样例

输入 #1

3
1 1 1 1
0 0 0 0
1 2 3 -4
 

输出 #1

0
1600000000
39088
 

说明/提示

数据范围:

对于10%的数据点,保证a,b,c,d均为0.

另有10%的数据点,保证a,b,c,d中有3个数为0.

另有20%的数据点,保证a,b,c,d中有2个数为0.

另有20%的数据点,保证a,b,c,d中有1个数为0.

对其余40%的数据点,仅保证a,b,c,d在[−50,50][−50,50]的范围内。

用4层循环去枚举x1,x2,x3,x4;
然后去判断如果a*i*i+b*j*j+c*k*k+d*x*x==0   ans++;
最后输出ans;

根据解析写代码4:

#include <bits/stdc++.h>
using namespace std;
int main(){
	int t;
	cin>>t;
	while(t--){
		int a,b,c,d;
		cin>>a>>b>>c>>d;
		int ans=0;
		for(int i=1;i<=100;i++){
			for(int j=1;j<=100;j++){
				for(int k=1;k<=100;k++){
					for(int x=1;x<=100;x++){
						if(a*i*i+b*j*j+c*k*k+d*x*x==0){
							ans++;
						}
					}
				}
			}
		}
		cout<<ans*16<<'\n';
	}
	return 0;
} 

5.卡牌收集计划:

题目描述

某浣熊为了提振旗下干脆面的销量,联合游戏厂商"真·三国无双"推出了新一轮的集武将卡送好礼活动。

小C作为一个有着严重收集癖的干脆面爱好者,他决定集齐所有的武将卡去兑换奖品;但是某浣熊可不会良心到每一包干脆面中的武将卡都不相同。所以小C决定尽可能多的去购买干脆面,从而用数量抵消概率带来的不确定性。

身为一个还在读初中的三好青年,小C购买干脆面的唯一经济来源就是妈妈给的每天11元的零花钱。但黑心的商店老板会根据商店里还剩多少干脆面的库存量提高售价,以使得自身的利益最大化。

具体来说:在接下来的n天时间里,第i天的干脆面售价为pi​,小C每天都可以使用手里的零花钱购买任意包干脆面(只要当前手中的零花钱足够),或是将当天的零花钱存起来以便日后使用。

现在小C想请智慧的你帮忙制定一个购买计划,以帮助他购买到尽可能多包的干脆面。请你求出小C最多可以购买到多少包干脆面?

输入格式

  • 输入第一行,一个整数n表示接下来n天时间。

  • 输入第二行,n个整数1,2,...,p1​,p2​,...,pn​表示每天的干脆面售价。

输出格式

一个整数,表示小C在这n天时间最多可以购买到多少包干脆面。

输入输出样例

输入 #1

6
3 2 5 3 4 3

输出 #1

2

输入 #2

5
6 3 3 4 2
 

输出 #2

2

输入 #3

5
7 6 5 9 8

输出 #3

0
 

说明/提示

样例解释:
  • 对于第一个样例:

Day1: 获得11元零花钱,总钱数1元,不够买这一天的干脆面;

Day2: 获得11元零花钱,总钱数2元,在当天购买一包干脆面,剩余零花钱00元;

Day3: 获得11元零花钱,总钱数1元,不够买这一天的干脆面;

Day4: 获得11元零花钱,总钱数2元,不够买这一天的干脆面;

Day5: 获得11元零花钱,总钱数3元,不够买这一天的干脆面;

Day6: 获得11元零花钱,总钱数4元,在当天购买一包干脆面。

一共可以购买最多两包干脆面。

  • 对于第二个样例:

在第五天购买两包干脆面为最优的购买方案。

数据范围:

对于20%的数据,保证pi​都是相同的.

对于50%的数据,保证n≤100.

对于80%的数据,保证n≤10^4.

对于100%的数据,保证n≤10^6,1≤pi​≤n.

先把最小值求出来,然后再判断a[i]是否等于最小值 ;
等于时,就算出最多可以购买到包数
不等于时,就攒钱

根据解析写代码5:

#include <bits/stdc++.h>
using namespace std;
long long  a[10101010];
long long z[10101010];
int main(){
	int n;
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	z[n]=a[n];
	for(int i=n-1;i>0;i--){
		z[i]=min(a[i],z[i+1]);
	}
	long long cnt=0;
	long long ans=0;
	for(int i=1;i<=n;i++){
		ans++;
		if(ans>=z[i]){
			cnt++;
			ans-=z[i];
		}
	}
	cout<<cnt;
	
	return 0;
} 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1993106.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++进阶学习】第十二弹——C++ 异常处理:深入解析与实践应用

前言&#xff1a; 在C编程语言中&#xff0c;异常处理是一种重要的机制&#xff0c;它允许程序员在运行时捕获和处理错误或异常情况。本文将详细介绍C异常处理的相关知识点&#xff0c;包括异常的定义、抛出与捕获、异常处理的原则、以及在实际编程中的应用。 目录 1. 异常处理…

算法力扣刷题记录 六十九【动态规划基础及509. 斐波那契数】

前言 调整一下做题顺序&#xff0c;多个章节同步进行&#xff0c;穿插练习。可以在各章节的专栏中找同一类。 记录 六十九【动态规划基础】。 一、动态规划理论基础学习 参考学习链接 二、509. 斐波那契数 2.1 题目阅读 斐波那契数 &#xff08;通常用 F(n) 表示&#x…

屏蔽浏览器搜索出csdn相关内容的方法

屏蔽csdn搜索结果的方法 前言 鉴于你对知识质量的渴望&#xff0c;以及对挖掘知识金子的欲求&#xff0c;你一定想在浏览器结果中去除有关Csdn的全部内容&#x1f608;**(确信)**&#xff0c;但是当你在用bing或者google搜索有没有可以屏蔽CSDN搜索结果的方法时&#xff0c;通…

一套基于tailwindcss的后台管理系统模板Chakra UI + React + TS

下载地址给你们&#xff1a; https://horizon-ui.com/#version

算法混合杂项

基础类型 可用template 投影 是有方向的 求俩直线交点 推公式 q我们不知道&#xff0c;已知p1 p2&#xff0c;正弦定理&#xff0c;α可以用叉积表示出来 β同理 所以我们能求出p1q 已知piq 回归到我们上一个问题&#xff0c;已知方向和长度&#xff0c;我们就能够求出Voq …

24/8/8算法笔记 不同分类算法的差异

import numpy as np from sklearn.tree import DecisionTreeClassifier from sklearn.linear_model import LogisticRegression from sklearn.svm import SVCfrom sklearn import datasets 加载数据 我们加载的是啤酒的数据 wine datasets.load_wine() wine LR逻辑斯蒂回归…

【数据结构】数组复习-二分查找法

写这篇博客的起因&#xff1a; 刚开始刷力扣&#xff0c;发现没有一个很好的做题方法&#xff0c;在网络上发现了这个博主的评论&#xff0c;如下。感觉挺适合我&#xff0c;所以开始复习一下数据结构。 c基础主要是看&#xff1a; 1.bilibili上青岛大学王卓第02周03--2.3线…

算法 二

求中点 LR&#xff0c;可能溢出 除以2&#xff0c;等同于右移一位 递归、递归的时间复杂度 母问题的规模 子问题的规模&#xff0c;且都相等 调用次数 不用展开看&#xff0c;就看一层。 归并排序 时间复杂度降低的原因&#xff1a;没有浪费比较。比如选择排序&#xff…

48天笔试训练错题——day44

目录 选择题 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 编程题 1. 单词倒排 选择题 1. A 类 IP 地址&#xff1a;0.0.0.0 ~ 127.255.255.255 1 字节网络号&#xff0c;3 字节主机号 B 类 IP 地址&#xff1a;128.0.0.0 ~ 191.255.255.255 2…

服务器网络磁盘挂载

一、Ping测试 先测试磁盘网络的连通性 例如&#xff1a;这里申请的网络磁盘是&#xff1a; 127.0.0.1:/shareData ping 127.0.0.1二、挂载 确认连通后&#xff0c;确定需要挂载的目录&#xff0c;这里服务器的挂载目录为&#xff1a;/data/share &#xff08;自主选择创建目录…

【食物链】

题目 代码 #include<bits/stdc.h> using namespace std; const int N 5e410; int n, k; int p[N], d[N]; int find(int x) {if(p[x] ! x){int root find(p[x]);d[x] d[p[x]];p[x] root;}return p[x]; } int main() {ios::sync_with_stdio(0);cin.tie(0);cout.tie(0)…

RaiDrive / Cyberduck 的安装破解

安装完成后&#xff0c;使用方法可以去这里看&#xff1a; Synology DS920 【外网访问】 这篇文章主要是为了解决 RaiDrive 的登录付费和 Cyberduck 的语言 所以可以尽管下载&#xff0c;盘中 RaiDrive 的免登录免费和 Cyberduck 的中文语言是没有问题的 硬盘映射程序 提…

专题 | IAM业界热度不减,2024市场持续井喷(一)

面对无边界、无规则、无差别&#xff08;企业规模&#xff09;的攻防时代&#xff0c;身份安全在网络安全的重要性日益增强。 身份安全是Gartner最近几年来频繁提及的重要未来趋势之一。RSAC 2023上RSA CEO Rohit Ghai 甚至发表了主题为《迫在眉睫的身份危机&#xff09;》的开…

DAMA学习笔记(十二)-数据质量

1.引言 数据管理能力包括为各类应用设计数据模型、安全存储和访问数据、适当地共享数据、从数据中获得知识&#xff0c;以及保障满足业务需求的能力等。但实现数据价值的前提是数据本身是可靠和可信的&#xff0c;换句话说&#xff0c;数据应是高质量的。 导致低质量数据产生的…

聚焦光热型太阳光模拟器助力多晶硅均匀加热

晶圆均匀加热技术综述 晶圆均匀加热是半导体制造过程中的关键技术之一&#xff0c;直接影响着晶圆上各种加工工艺的质量和稳定性。晶圆加热的目的在于化学气相沉积、退火、氧化等工艺中&#xff0c;通过对晶圆进行必要的热处理&#xff0c;以促进或优化后续工艺步骤。不均匀的…

嵌入式软件--C语言项目 客户信息管理系统

考虑到目前C语言的学习是以为嵌入式做基础而进行的&#xff0c;项目所使用到的语法和结构都是嵌入式常用到的&#xff0c;这是较为特殊和针对性的项目&#xff0c;不与其他同名项目作比较。若有参考着谨慎借鉴。 实现一个客户信息管理系统&#xff0c;功能包括添加客户、修改客…

CTFHUB-web-RCE-远程包含

开启题目 点击下面的 phpinfo 跳转之后发现查看到了 PHP版本&#xff0c;根据源码可以感觉到这里有文件包含&#xff0c;查看之后发现 allow 的配置都开着 抓包之后把 GET 换成 POST&#xff0c;构造 payload 发包&#xff0c;发现根目录有一个 flag 文件 <?php system(ls…

关于FOC学习资料的整理

【自制FOC驱动器】深入浅出讲解FOC控制与SVPWM技术 (qq.com)https://mp.weixin.qq.com/s?__bizMzk0NDQxMTY5OA&mid2247493780&idx1&sn53eacd4fd7e452489fc612bcb2b46a75&source41#wechat_redirect 稚晖君写的文章&#xff0c;涉及面很全&#xff0c;很通俗易…

【机器学习】ImageNet的基本概念以及如何使用ImageNet数据集

引言 ImageNet是一个大型的图像数据库&#xff0c;它根据WordNet的层级结构&#xff08;目前仅限于名词&#xff09;组织&#xff0c;其中每个层级节点都由成百上千张图像来描绘。这个项目对计算机视觉和深度学习研究的发展起到了重要作用 文章目录 引言一、ImageNet的基本概念…

ppt转pdf需要怎么转?6个软件教你快速进行文件格式转换

ppt转pdf需要怎么转&#xff1f;6个软件教你快速进行文件格式转换 将PPT转换为PDF格式是许多办公人员和学生常见的需求&#xff0c;尤其是在分享和发布文档时。以下是六款方便且高效的PPT转PDF软件&#xff0c;帮助你快速进行文件格式转换。 迅捷PDF转换器 这是专业的PDF编辑…