2023暑假集训周测1

这篇文章包含一系列编程挑战,涉及数组的循环左移操作,三角形的组合计数,一元二次方程的求根,暴力枚举策略,胡同里的汽车倒车问题,猜数字游戏的最优化策略,以及复杂算术表达式的求解。这些问题涵盖了算法设计、数学逻辑和问题解决技巧。
摘要由CSDN通过智能技术生成

7-1 数组循环左移

分数 20

全屏浏览题目

切换布局

作者 DS课程组

单位 浙江大学

本题要求实现一个对数组进行循环左移的简单函数:一个数组a中存有n(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向左移m(≥0)个位置,即将a中的数据由(a0​a1​⋯an−1​)变换为(am​⋯an−1​a0​a1​⋯am−1​)(最前面的m个数循环移至最后面的m个位置)。如果还需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?

输入格式:

输入第1行给出正整数n(≤100)和整数m(≥0);第2行给出n个整数,其间以空格分隔。

输出格式:

在一行中输出循环左移m位以后的整数序列,之间用空格分隔,序列结尾不能有多余空格。

输入样例:

8 3
1 2 3 4 5 6 7 8

输出样例:

4 5 6 7 8 1 2 3

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

7-2 三角形的组合计数

分数 15

全屏浏览题目

切换布局

作者 杨璐溢

单位 贵州工程应用技术学院

三角形是几何的重要基础,几乎所有的几何问题都涉及到三角形,许多著名定理的证明都离不开三角形,例如蝴蝶定理其中的一些证明等,三角形可以与许多几何图形组合在一起,构成简易程度不同的问题,同时三角形的性质,定理也相当广,涵盖几何,代数,泛函分析等许多方面内容。现在就让我们一起来简单的认识一下三角形:

假设三角形的边长为不相等的正整数,且最大边长为n,求这些三角形的个数,并输出从1到n中任取三个不同的正整数,它们可以是一个三角形的三条边的概率。

(注:三角形的三条边是无序的,如a,b,c与a,c,b为同一种)
(提示:可设中间边长为k,则k的取值为(n/2,n)内的所有正整数,对应的最小边长为(n-k,k)内所有的正整数)

输入格式:

输入在一行中给出1个正整数T表示测试组数,接下来一行输入T个数,每个数n分别表示每组测试中相应的最大边长。(3 <= n <= 1000) (1 <= T <=3)

输出格式:

对每一组输入,在一行中输出三角形个数,以及1到n中任取三个不同的整数,它们可以是一个三角形的三条边的概率,概率保留三位小数。

输入样例1:

1
3

输出样例1:

0 0.000

输入样例2:

2
4 5

输出样例2:

1 0.250
3 0.300

输入样例3:

3
6 67 678

输出样例3:

7 0.350
23408 0.489
25800047 0.499

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

7-3 h0053. 求一元二次方程的根

分数 10

全屏浏览题目

切换布局

作者 黄正鹏

单位 贵州工程应用技术学院

利用公式x1 = (-b + sqrt(b* b-4* a* c))/(2* a), x2 = (-b - sqrt(b* b-4* a* c))/(2* a)求一元二次方程ax^2 + bx + c =0的根,其中a不等于0。

输入格式:

第一行是待解方程的数目n。
其余n行每行含三个浮点数a, b, c(它们之间用空格隔开),分别表示方程ax^2 + bx + c =0的系数。

输出格式:

输出共有n行,每行是一个方程的根:
若是两个实根,则输出:x1=...;x2 = ...
若两个实根相等,则输出:x1=x2=...
若是两个虚根,则输出:x1=实部+虚部i; x2=实部-虚部i

所有实数部分要求精确到小数点后5位,数字、符号之间没有空格。
x1和x2的顺序:x1的实部>Re的实部||(x1的实部==x2的实部&&x1的虚部>=x2的虚部)

输入样例:

3
1.0 3.0 1.0
2.0 -4.0 2.0
1.0 2.0 8.0

输出样例:

在这里给出相应的输出。例如:

x1=-0.38197;x2=-2.61803
x1=x2=1.00000
x1=-1.00000+2.64575i;x2=-1.00000-2.64575i

代码长度限制

16 KB

时间限制

4000 ms

内存限制

64 MB

7-4 暴力枚举

分数 10

全屏浏览题目

切换布局

作者 李曲

单位 浙江工业大学

阿德里安、布鲁诺和戈兰想加入鸟类爱好者俱乐部。然而,他们并不知道所有申请者都必须通过入学考试。考试由N道题组成,每道题有三个可能的答案:A、B和C。

不幸的是,他们无法分辨鸟和鲸,所以他们正试图猜出正确的答案。三个男孩中的每一个都有一个理论,即什么样的答案最有效:

Adrian声称最好的顺序是:A,B,C,A,B,C,A,B,C,A,B,C。。。

Bruno确信这样更好:B,A,B,C,B,A,B,C,B,A,B,C。。。

Goran嘲笑他们,并将使用以下顺序:C,C,A,A,B,B,C,C,A,A,B。。。

写一个程序,给出考试的正确答案,确定三者中谁是对的——谁的顺序包含最正确的答案。

输入格式:

第一行包含一个整数N(1≤N≤100),考试题的数量。

第二行包含一个由N个字母“A”、“B”和“C”组成的字符串。这些是考试中问题的正确答案。

输出格式:

在第一行,输出M,表示三个男孩中的得到的正确答案最多的数量。

然后,输出男孩的名字(按字母顺序)。

输入样例1:

5
BAACC

输出样例1:

3
Bruno

输入样例2:

9
AAAABBBBB

输出样例2:

4
Adrian
Bruno
Goran

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

7-5 胡同

分数 10

全屏浏览题目

切换布局

作者 黄龙军

单位 绍兴文理学院

有一个死胡同,宽度刚好只能让一辆汽车通过,偏偏老有汽车开到死胡同来,这下麻烦了,最先开来的汽车要最后才能倒退出去。给定一个汽车开来的序列和一个可能的倒车出去的序列,请判断汽车能否都倒退出去,若能则输出Yes,否则输出No。

输入格式:

首先输入一个整数T,表示测试数据的组数,然后是T组测试数据。每组测试数据首先输入一个正整数n(n≤10),代表开来的汽车数,然后输入2n个整数,其中,前n个整数表示汽车开来的序列,后n个整数表示汽车可能倒出的序列。

输出格式:

对于每组测试,判断能否倒车出该死胡同,若能则输出“Yes”,否则输出“No”。引号不必输出。

输入样例:

2
4 1 2 3 4 2 1 4 3
4 1 2 3 4 4 2 1 3

输出样例:

Yes
No

提示:

样例1的可能方案为:1进,2进,2出,1出,3进,4进,4出,3出。

来源:

[1] 黄龙军,等. 数据结构与算法, 上海:上海交通大学出版社, 2022.7. ISBN: 9787313269881
[2] 黄龙军, 等. 数据结构与算法(Python版),上海: 上海交通大学出版社, 2023. (In Press)

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

7-6 猜数字

分数 50

全屏浏览题目

切换布局

作者 朱敏奇

单位 湖南工学院

小红和小明正在玩一个猜数字游戏。

由小红指定一个正整数 x,小明并不知道 x 的具体值,只知道 x 的取值范围是 [1,n]。

为了猜出 x 的具体值,小明可以向小红问这样的问题:“x 是否可以被整数 y 整除?”。

小明可以询问的次数不限(也可以不进行任何询问),但是询问次数越少越好。

对于小明的每次询问,小红需要如实回答小明是或否。

在小明进行完所有询问后,他需要根据小红的所有回答,确定 x 的具体值。

为了做到万无一失,小明希望无论 x 取什么值,在进行完所有询问后,都能根据小红的回答将其唯一确定。

请计算小明所需要的最少询问次数,并给出一种具体询问方案。

例如,当 n=4 时,最少需要进行 3 次询问,一种可能方案是 3 次询问的 y 值依次为 2,4,3,下面进行分析:

  • 如果 x=1,则小红的回答依次为:否、否、否。

  • 如果 x=2,则小红的回答依次为:是、否、否。

  • 如果 x=3,则小红的回答依次为:否、否、是。

  • 如果 x=4,则小红的回答依次为:是、是、否。

可以发现,x 取不同值时,小红的回答各不相同,所以小明可以根据小红的回答来唯一确定 x 的值。

当询问次数小于 3 时,无法保证小明能够根据小红的回答来唯一确定 x 的值。

例如,对于我们之前给出的可能方案,如果不进行第 3 次询问,那么:

  • 如果 x=1,则小红的回答依次为:否、否。

  • 如果 x=2,则小红的回答依次为:是、否。

  • 如果 x=3,则小红的回答依次为:否、否。

  • 如果 x=4,则小红的回答依次为:是、是。

可以发现,当 x的取值为 1 或 3 时,小红的回答均为:否、否,小明无法根据小红的回答来唯一确定 x 的值。

输入格式:

一个整数 n。

输出格式:

第一行输出一个整数 k,表示所需要的最少询问次数。

第二行输出 k 个数,表示每次询问的 y 值。

注意,当 k=0 时,第二行必须输出空行,否则会判为错误。

如果方案不唯一,输出任意合理方案均可。

!!!!输出结果末尾必须有空格

输出格式:

前 3 个测试点满足 1≤n≤10。
所有测试点满足 1≤n≤1000。

输入样例1:

在这里给出一组输入。例如:

4

输出样例1:

在这里给出相应的输出。例如:

3
2 4 3 

输入样例2:

6

输出样例2:

在这里给出相应的输出。例如:

4
2 4 3 5 

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

7-7 算术表达式

分数 50

全屏浏览题目

切换布局

作者 朱敏奇

单位 湖南工学院

给定一个表达式,其中运算符仅包含 +,-,*,/(加 减 乘 整除),可能包含括号,请你求出表达式的最终值。

注意:

  • 数据保证给定的表达式合法。
  • 题目保证符号 - 只作为减号出现,不会作为负号出现,例如,-1+2,(2+2)*(-(1+1)+2) 之类表达式均不会出现。
  • 题目保证表达式中所有数字均为正整数。
  • 题目保证表达式在中间计算过程以及结果中,均不超过2^31−1

。 题目中的整除是指向 0 取整,也就是说对于大于 0 的结果向下取整,例如 5/3=1,对于小于 0 的结果向上取整,例如 5/(1−4)=−1。

输入格式:

共一行,为给定表达式。

输出格式:

共一行,为表达式的结果。

数据范围

表达式的长度不超过 105。

输入样例:

(2+2)*(1+1)

输出样例:

8

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值