CSP-J复赛 模拟题2

1. 整数构造:

题目描述

给出一个整数 x,你需要构造一个十进制整数num ,使得num 的每一个数位上的数字之和为x ,且每一位数字 都不相同。你需要给出可能的最小的num ,如果不存在可行的方案则输出-1

输入格式

输入仅一行,一个整数x .

输出格式

输出仅一行,一个数字表示你构造得出的答案

样例 #1

样例输入 #1

15

样例输出 #1

69

样例 #2

样例输入 #2

3

样例输出 #2

3

样例 #3

样例输入 #3

49

样例输出 #3

-1

 

提示

数据范围:

对于10的数据,保证x<=9

对于40 的数据,保证x<=20

对于100的数据,保证x<=50

2.最大余数:

题目描述

现给出一个区间 [l,r],你需要在该区间中找到两个数字a,b ,使得a%b的值最大,输出这个最大值

输入格式

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

接下来T行,每行两个数字l,r,表示给定的区间

输出格式

输出共T行,每行一个数字表示对于每组询问,能找到满足条件的a%b的最大值

样例 #1

样例输入 #1

4
1 1
999999999 1000000000
8 26
1 999999999

 样例输出 #1

0
1
12
499999999

 

说明/提示

样例解释:

第一组询问中,a=1,b=1

第二组询问中,a=1000000000,b=999999999

第三组询问中,a=25,b=13

第四组询问中,a=999999999,b=500000000

数据范围:

对于30%的测试点,保证0≤l≤r≤5000

对于60%的测试点,保证0≤l≤r≤106

对于100%的测试点,保证0≤l≤r≤1018

3.组队参赛:

题目描述

八年级三班的n位同学们计划组队去参加编程比赛,由于编程比赛中,小组成员的木桶效应非常明显,一个小组的真实水平往往取决于小组中水平最高的选手与水平最低的选手,于是班主任陈老师给每一位同学测算了一下ta的编程能力并打出了分数ai​。

此时,参赛的每一组选手就都有了衡量小组真实实力的评判标准,每组参赛队伍的能力值 = 小组内能力最高的选手能力值 ×小组内能力最低的选手能力值

组队的过程中,大家都想要和自己的好朋友一起组队参赛,每一位参赛的选手都希望自己所在队伍中至少有一名自己的好朋友,如果不能和自己的要好朋友一起参赛,那么比赛成绩也将变得毫无意义。需要注意的是,好朋友的关系并不构成传递性,这也就意味着如果a,b是好朋友,b,c也是好朋友,但这不代表a,c就一定是好朋友的关系。

现在班主任陈老师通过班级内的眼线,收集到了所有同学间的关系情报,他想知道如何分组才能让这次参加比赛的最强队伍能力值最高。

输入格式

输入第一行,两个数字n,m,表示班级里有n名同学,以及m对同学是好朋友的关系。

第二行,n个正整数1,2,...,a1​,a2​,...,an​,表示n名同学的编程能力值。

接下来的m行,每行两个整数x,y,表示x,y两名同学是好朋友。

输出格式

输出仅一行,一个数字,表示能力最强小组的能力值。

输入输出样例

输入 #1

4 3
6 2 7 4
1 2
2 3
3 4

输出 #1

28

输入 #2

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

输出 #2

35

说明/提示

样例解释:

对于样例1:能力最强的小组应该由第3,4两名选手组成,小组的能力值为7×4=287×4=28

对于样例2:能力最强的小组应该由第2,4两名选手组成,小组的能力值为5×7=355×7=35

数据范围:

对于10%的数据点,输入数据保证ai​都是同一数字;

对于30%的数据点,输入数据保证∣x−y∣=1;

对于70%的数据点,输入数据保证n,m≤10^3;

对于100%的数据点,输入数据保证n≤105,m≤10^6,0≤ai​≤10^9,1≤x,y≤n;

4.密码破译:

题目描述

C星高度紧张的政治局势使得居住在上面的人们说话非常谨慎,人们将所有的语言文字都转换为了数字表示;为了防止政治审查,人们发明了一种简单而有效的加密方式:

譬如人们想表达的一句话转换为数字之后为1,2,3,...,a1​,a2​,a3​,...,an​,那么会将这n个数字进行一次加密.

加密之后仍为n个数字1,2,...,b1​,b2​,...,bn​,且满足bi​=ai​−ai+1​+ai+2​−ai+3​+...±an​.

现给出加密之后的b数组,求加密之前的a数组。

输入格式

第一行,一个正整数n,表示数组长度。

接下来第二行,n个整数1,2,...,b1​,b2​,...,bn​。

输出格式

输出仅一行,n个数字1,2,...,a1​,a2​,...,an​,表示加密之前的n个数字。

输入输出样例

输入 #1

5
6 -4 8 -2 3

输出 #1

2 4 6

输入 #2

5
3 -2 -1 5 6

输出 #2

1 -3 4 11 6 

说明/提示

样例解释:

对于样例1:

b3​=a3​−a4​+a5​=6−1+3=8

b4​=a4​−a5​=1−3=−2

b5​=a5​=3

依此类推。

数据范围:

对于30%的数据,保证输入的bi​为同一数字;

对于60%的数据,保证n≤10^3;

对于100%的数据,保证n≤10^6,bi​在int范围内。

5.阿德里安的供奉:

题目描述

家财万贯的阿德里安是一名虔诚的嘟嘟教信徒,为了表示自己对信仰的忠贞不二,他从信教开始的每一天都会给主教大人奉上金币:

第一天,阿德里安为了他的信仰奉上了1枚金币;

接下来的两天,阿德里安为了他的信仰封上了1枚,2枚金币;

在接下来的三天,阿德里安为了他的信仰封上了1枚,2枚,3枚金币

...

依此类推。阿德里安一觉醒来发现今天已经是新教的第n天了,他突然想不起来今天要供奉多少金币,请你帮他计算今天他需要供奉多少枚金币?

输入格式

输入仅一行,一个正整数n,表示今天是阿德里安信教的第n天。

输出格式

一个整数,表示阿德里安要供奉的金币个数。

输入输出样例

输入 #1

6
 

输出 #1

3
 

输入 #2

17
 

输出 #2

2

 

输入 #3

55
 

输出 #3

10

 

说明/提示

样例解释:

对于第一个样例:前6天需要供奉的金币个数为:1 1 2 1 2 3

第6天需要供奉6枚金币

数据范围:

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

对于60%的数据,保证n≤10^5

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

对于100%的数据,保证n≤10^18

提示:

这套模拟题的难度在入门组第一题和第二题之间,有稍稍难度,但是找到关键你就会恍然大悟

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值