问题标题: CSP-J复赛&信息学科普日校选(至暗时刻)

1
0
已解决
李子墨
李子墨
新手天翼
新手天翼

加油!
(下面是Deepseek生成的模拟题)

合肥市48中滨湖校区信息学校选机试模拟题(C++ 初中组)

(满分:100分,时间:120分钟)

考试环境: C++ (建议使用 C++11 及以上标准)
提交要求: 每道题单独一个源文件,如 problem1.cpp

问题一:质数进制(20分)

【问题描述】
在一种特殊的质数进制中,第 i 位上的权值是第 i 个质数(p₁=2, p₂=3, p₃=5, p₄=7,...)。例如:

  • 十进制数 3 表示为 1 0(因为 1×3 + 0×2 = 3)

  • 十进制数 7 表示为 1 0 0(因为 1×5 + 0×3 + 0×2 = 5 ≠ 7? 注意:应为 1×7 + 0×5 + 0×3 + 0×2 = 7)

更正规则: 数字的表示是从右向左,权重从小到大(最右边是最小质数2)。
更正的例子:

  • 3 = 1×3 + 0×2 → 表示为 1 0(从左到右是高位到低位)

  • 7 = 1×7 + 0×5 + 0×3 + 0×2 → 表示为 1 0 0 0

给定一个十进制正整数 n,请将其转换为这种质数进制表示。

**【输入格式】
一个整数 n (2 ≤ n ≤ 10000)

【输出格式】
一串数字序列,表示质数进制下的结果,数字之间用空格隔开。

【样例输入1】

text

 

 

复制

 

下载

7

【样例输出1】

text

 

 

复制

 

下载

1 0 0 0

【样例输入2】

text

 

 

复制

 

下载

10

【样例输出2】

text

 

 

复制

 

下载

0 1 0 1

解释:10 = 0×7 + 1×5 + 0×3 + 1×2 = 5 + 2 = 7? 不对,应该是 10 = 1×7 + 0×5 + 1×3 + 0×2 = 7 + 3 = 10,所以是 1 0 1 0(从左到右是高位到低位)

注意: 我们需要重新澄清规则。实际上标准的质数进制表示是这样的:

n = a₁×p₁ + a₂×p₂ + a₃×p₃ + ... 其中 0 ≤ aᵢ < pᵢ₊₁/pᵢ? 不,更简单的方法是贪心算法:

正确算法: 从最大的质数权重开始减。

让我们重新定义:质数列表为 [2,3,5,7,11,...],表示时从大到小排列权重。

例如 10:

  • 找到不超过10的最大质数权重是7

  • 10 ÷ 7 = 1 余 3 → 第一位是1

  • 余数3,下一个质数是5,但5>3,所以该位是0

  • 下一个质数是3,3÷3=1余0 → 第二位是1

  • 余数0,后面都是0

所以10表示为 1 0 1 0(从7的权重到2的权重)

【输入格式】
一个整数 n (2 ≤ n ≤ 10000)

【输出格式】
从最高位到最低位的数字序列,用空格分隔

【样例输入1】

text

 

 

复制

 

下载

10

【样例输出1】

text

 

 

复制

 

下载

1 0 1 0

【样例输入2】

text

 

 

复制

 

下载

7

【样例输出2】

text

 

 

复制

 

下载

1 0 0 0

问题二:最少操作次数(25分)

【问题描述】
给定一个长度为 n 的整数数组,每次操作可以选择一个元素将其加1或减1。求最少需要多少次操作,可以使得数组中任意两个相邻元素的乘积为偶数(即相邻元素至少有一个是偶数)。

【输入格式】
第一行一个整数 n (2 ≤ n ≤ 1000)
第二行 n 个整数 a₁, a₂, ..., aₙ (1 ≤ aᵢ ≤ 1000)

【输出格式】
一个整数,表示最少操作次数

【样例输入】

text

 

 

复制

 

下载

5
1 2 3 4 5

【样例输出】

text

 

 

复制

 

下载

2

解释:可以把第一个1加1变成2,或者把第三个3加1变成4,等等。

问题三:最长优质子序列(30分)

【问题描述】
我们称一个序列是"优质"的,如果这个序列的任意两个相邻元素的差正好是1。现在给定一个长度为 n 的整数序列,请找出最长的连续优质子序列的长度。

【输入格式】
第一行一个整数 n (1 ≤ n ≤ 100000)
第二行 n 个整数 a₁, a₂, ..., aₙ (1 ≤ aᵢ ≤ 100000)

【输出格式】
一个整数,表示最长优质子序列的长度

【样例输入】

text

 

 

复制

 

下载

8
1 2 3 2 3 4 5 4

【样例输出】

text

 

 

复制

 

下载

5

解释:子序列 2 3 4 5 4 或 3 2 3 4 5 都满足条件,长度为5。

问题四:数字重组(25分)

【问题描述】
给定一个正整数 n,你可以重新排列它的各位数字(不能有前导0),求能够得到的最大素数。如果无法重组得到任何素数,输出 -1。

【输入格式】
一个整数 n (1 ≤ n ≤ 1000000)

【输出格式】
一个整数,表示最大素数,或 -1

【样例输入1】

text

 

 

复制

 

下载

137

【样例输出1】

text

 

 

复制

 

下载

731

解释:137可以重组成173, 317, 371, 713, 731,其中731是最大的素数。

【样例输入2】

text

 

 

复制

 

下载

246

【样例输出2】

text

 

 

复制

 

下载

-1

解释:246只能重组成246, 264, 426, 462, 624, 642,都不是素数。

李子墨在2025-10-10 19:47:13追加了内容

校选题目:
1.直播获奖(略,score)
2.大写数字(略,big)
3.超级感染源(super)
4.相同字符(same)
t3:

输入被感染者和传播者(也就是感染前者的人,若是0则前者为感染源)

其中,感染人数定义为直接传播+间接传播(1->2,2->3,则1->3)

输出感染人数最多的id最小的人。
思路:s数组存感染源(sort一下)ill数组存感染源头(最终端),t数组计数
t4:
给出字符串(只有xy),每次操作:
将x变成xx

将y变成xy

输出这两个字符串的同一位置上同样字符数
思路:模拟60分,数学优化100分(我cai所以选择60分)
估分:100+90(忘特判了)+100+60(应该皆大欢喜)

……

……

……

……

……

……

……

……

……

……

……

……

……

……

……

……

……

……

……

……

……

……

……

……

……

……

……

……

……

……

……

……

……

……

……

……

……

……

……

……

……

……

……

……

……

……

……

……

……

……

……

……

……

……

……

……

实际上:0???(未知原因)
校选pass,只能看CSP-J把我带进省赛了QAQ


0
已采纳
包思远
包思远
初级启示者
初级启示者

当年根据此题仿着出的题:

0
黄芊萱
黄芊萱
修练者
修练者

啧....好像看到了当年的我

0
包思远
包思远
初级启示者
初级启示者

这题是老题了

我当年还在打小学信奥竞赛的时候就见过这道题了,实际出题时间应该更早,因为我当年看到这题的时候此题已是典题

0
毕博雨
毕博雨
新手天翼
新手天翼

爆0真的很可惜,特别是忘了注释掉调试语句或者**后忘了把文件操作的注释去掉(别问我怎么知道)

我要回答