广外2018校赛简单题题解

只会做ABCDEF简单题,难题GHI不会做就没办法写了。

Problem A: 签到

Time Limit: 1 Sec   Memory Limit: 128 MB
Submit: 83   Solved: 44
[ Submit][ Status][ Web Board]

Description

         ACM比赛最有趣的就是签到题了,参赛选手们为了抢签到题的FB,甚至采取了秒写代码不调试直接提交代码的做法。当然这种做法极具风险,一般来说,提交结果只有两种,AC跟CE,就是要么通过,要么编译错误。不过,前阵子貌似也有比较例外的情况,花式WA的做法,把广外ACM的某位师兄气了个半死……
         你的签到任务就是,求两个整数的乘积。祝你签到成功^_^

Input

第一行先输入一个正整数 T(1 <= T <= 10000),表示有T组数据。
接下来T行,每行有两个数字,这些数字都是正整数,且最大不超过1000。

Output

对于每组数据,输出一个数字表示计算结果。

Sample Input

3
2 4
19 33
1000 100

Sample Output

8
627
100000

 FAQ http://t.cn/zjHKbmN Linux问题看http://t.cn/aWnP1n 

Problem B: 2018

Time Limit: 1 Sec   Memory Limit: 128 MB
Submit: 100   Solved: 43
[ Submit][ Status][ Web Board]

Description

         很久很久以前,long long long long long long ago……
传说在A国,国王在他临终前,把很多宝藏,藏到了一个密室中,并且在这个密室加了锁。而解开这个锁,只需要站在密室门前,大声说出一个数字,如果数字对了,门就会打开。但如果说错了,不好意思,陷阱就会启动。国王只留下了一串文字,里面包含了阿拉伯数字和大小写字母,显得杂乱无章。多年以来,没有人能解开这个谜题。终于,有一位考古学家解开了,他发现,最终的数字,就是用这串文字里的字符去拼凑2018这个数字,能拼到多少个,答案就是多少。现在这个任务交给你了,请你破解出隐藏在文字串中的信息。

Input

第一行先输入一个正整数 T(1 <= T <= 100),表示有T组数据。
每组数据就一行,一个字符串,里面只出现阿拉伯数字,以及大小写字母。长度不超过100000。

Output

对于每组数据,输出一个数字,代表用这个字符串能拼凑出多少个2018。

Sample Input

4
2X0y1z8
8102201aa801ddd288
222000111888abcdefg
201WSAD

Sample Output

1
3
3
0

HINT


解:扫一遍用一个数组记录2018分别出现的次数,输出最小。


Problem C: 聪哥的烦恼

Time Limit: 1 Sec   Memory Limit: 128 MB
Submit: 124   Solved: 38
[ Submit][ Status][ Web Board]

Description

         聪哥很喜欢玩codeforces,一款码农的大型对战网游,全球同服。在这个游戏里,每个玩家都有一个rating,新玩家都会有一个初始的rating,根据每场对战的成绩,rating会上升或下降。而聪哥,有时候不小心就玩脱翻车了,rating掉到低于初始分了,聪哥就会……选择重新注册一个号……到现在,聪哥已经注册了N个账号。
有一天,codeforces举办了一个活动,但是这次必须两个人组队参加,这时候,聪哥有一个大胆的想法,决定拿出他那堆账号,其中两个拿出来组队,然后单挑!但聪哥此时还有一个想法,他希望这两个账号的rating尽可能接近,也就是两个rating的差的绝对值尽可能小。而现在聪哥忙着准备比赛了,他把这个任务交给你了,请告诉聪哥,他最接近的两个账号的rating的差的绝对值是多少。

Input

第一行输入一个T,表示T组数据。
每组数据输入两行,第一行是一个正整数N,表示聪哥有N个账号。
第二行输入N个正整数,表示各个账号的rating。
数据范围:
1 <= T <= 100
2 <= N <= 100000
1 <= rating <= 1000000000

Output

对于每组数据,输出一个数字,表示rating中差的绝对值的最小值。

Sample Input

3
5
1000 2000 1100 1500 1400
3
1000 1000 1000
8
2 4 6 40 20 11 13 15

Sample Output

100
0
2

HINT


解:快排然后扫一遍记录两两之间差的最小值


Problem D: 数学题

Time Limit: 1 Sec   Memory Limit: 128 MB
Submit: 90   Solved: 12
[ Submit][ Status][ Web Board]

Description

AC哥在想一个数学题,这个题目是这样的,有很多根火柴,不同火柴的长短不一样。第i根火柴,只点燃其中一端开始燃烧,需要ti的时间,而如果一开始就同时点燃两端,则只需要0.5*ti的时间。我们只允许在一开始选择点燃一端,或者同时点燃两端,不允许在其它地方点燃,也不允许燃烧到中途才点燃两一端。如果我们在一根火柴燃烧完立刻燃烧另一根,假设为j(假设中间不需要间隔,也没有时间上的交叉),就能利用这两个火柴测量出ti+tj 或ti + 0.5*tj 或 0.5*ti + tj 或 0.5*ti+0.5*tj这些时间。
现在问题来了,已知N根火柴各自的ti,AC哥想知道能否用它们测量出一个时间A,如果能测出来,他希望用的火柴数最少。

Input

第一行输入一个T,表示有T组数据。
每组数据输入占两行,第一行为两个整数N和A,表示火柴数量,以及AC哥要测量的时间。
接下来一行是N个正整数,表示每根火柴对应的燃烧时间ti。
数据范围:
1 <= T <= 20
1 <= N <= 1000
1 <= A <= 1000
2 <= ti <= 1000,且ti均为偶数。

Output

对于每组数据,先输出“Case #k: result”,k表示第k组数据,从1开始。(注意冒号后面有一个空格)
如果能够测量出A,则result为所需的最少的火柴数量。
否则,result为“No Solution!”
具体请参考样例。

Sample Input

3
2 5
6 2
4 10
2 2 2 2
5 11
2 2 2 16 20

Sample Output

Case #1: 2
Case #2: No Solution!
Case #3: 2

解:
NOIP 2018 普及组初赛第1028题解如下: 目描述: 给定一个正整数N,要求编写一个程序,计算出它的阶乘N!。阶乘N!是所有小于或等于N的正整数的乘积,且0!定义为1。例如:5! = 5 × 4 × 3 × 2 × 1 = 120。 输入描述: 输入仅包含一个正整数N,其范围为1到20。 输出描述: 输出为计算得到的阶乘N!的值。 解思路: 1. 使用一个数组来存储中间计算结果。 2. 从1开始,依次计算到N的所有整数的阶乘。 3. 每计算出一个数的阶乘,就将其乘到数组中,更新数组的值。 4. 最终数组存储的就是N!的结果。 注意点: - 由于N的范围为1到20,而20!的结果是一个非常大的数,普通的数据类型无法存储,因此需要使用数组来模拟大数运算。 - 在实现大数乘法时,需要注意进位的问。 以下是一个简化的伪代码示例: ``` 输入:N 创建一个足够大的数组result用于存储结果 result[0] = 1 // 初始化结果为1 对于i从1到N: carry = 0 // 进位初始化为0 对于j从0到result的长度减1: temp = result[j] * i + carry result[j] = temp % 10 // 更新当前位的值 carry = temp / 10 // 计算新的进位 结束循环 如果carry不为0,则继续添加进位 结束循环 输出result数组(从后往前输出,以得到正确的顺序) ``` 实际编程时,需要注意数组的索引处理和进位处理,以及在输出时避免在前面输出不必要的零。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值