基础代码检测.docx
《基础代码检测.docx》由会员分享,可在线阅读,更多相关《基础代码检测.docx(18页珍藏版)》请在冰豆网上搜索。
基础代码检测
赛场秋点兵,看你行不行?
说明:
共15道题,重在考察基础代码能力。
比的不只是得分,更是效率。
你能在5个小时内完成吗?
题目一览
题目名称
谁是组长
最小花费
最小伤害
寻找代表元
源文件名称
leader.(pas/c/cpp)
money.(pas/c/cpp)
harm.(pas/c/cpp)
unique.(pas/c/cpp)
输入文件名
leader.in
money.in
harm.in
unique.in
输出文件名
leader.out
money.out
harm.out
unique.out
时间限制
1秒
1秒
1秒
1秒
内存限制
10M
40M
10M
10M
测试点
10个
10个
10个
10个
分值
100分
100分
100分
100分
题目名称
有故障的打字机
最大约数和
流感会结束吗
源文件名称
typewrt.(pas/c/cpp)
maxsum.(pas/c/cpp)
flu.(pas/c/cpp)
输入文件名
typewrt.in
maxsum.in
flu.in
输出文件名
typewrt.out
maxsum.out
flu.out
时间限制
1秒
1秒
1秒
内存限制
32M
32M
32M
测试点
10个
10个
10个
分值
100分
100分
100分
题目名称
二进制除法
奇怪的函数
最小函数值
矩阵乘法
源文件名称
binary.(pas/c/cpp)
xx.(pas/c/cpp)
minval.(pas/c/cpp)
matrix.(pas/c/cpp)
输入文件名
binary.in
xx.in
minval.in
matrix.in
输出文件名
binary.out
xx.out
minval.out
matrix.out
时间限制
1秒
1秒
1秒
1秒
内存限制
32M
32M
32M
32M
测试点
10个
10个
10个
10个
分值
100分
100分
100分
100分
题目名称
单峰排列
连接格点
无序字母对
数字转换
源文件名称
unimodal.(pas/c/cpp)
grid.(pas/c/cpp)
pair.(pas/c/cpp)
transfer.(pas/c/cpp)
输入文件名
unimodal.in
grid.in
pair.in
transfer.in
输出文件名
unimodal.out
grid.out
pair.out
transfer.out
时间限制
1秒
1秒
1秒
1秒
内存限制
32M
32M
32M
32M
测试点
10个
10个
10个
10个
分值
100分
100分
100分
100分
Problem1:
leader
谁是组长
问题描述
信息组需要选一个组长。
信息组一共有n个人,分别用1到n编号,其中m个人参与了投票。
得票数过半(票数大于mdiv2)的人将被选为组长。
输入数据将告知这m个人分别将票投给了谁,请统计出谁将担任信息组的组长。
输入数据
第一行两个数n和m。
第二行有m个数,这些数都是不超过n的正整数,表明这m个人的选择。
输出数据
输出将被选为组长的人。
如果没有人的票数过半,请输出-1。
输入样例
74
7727
输出样例
7
时间限制
各测试点1秒
内存限制
你的程序将被分配10MB的运行空间
数据规模
1<=n<=maxlongint
1<=m<=10000
Problem2:
money
最小花费
问题描述
在n个人中,某些人的银行账号之间可以互相转账。
这些人之间转账的手续费各不相同。
给定这些人之间转账时需要从转账金额里扣除百分之几的手续费,请问A最少需要多少钱使得转账后B收到100元。
输入数据
第一行输入两个正整数n,m,分别表示总人数和可以互相转账的人的对数。
以下m行每行输入三个正整数x,y,z,表示标号为x的人和标号为y的人之间互相转账需要扣除z%的手续费(z<100)。
最后一行输入两个正整数A,B。
数据保证A与B之间可以直接或间接地转账。
输出数据
输出A使得B到账100元最少需要的总费用。
精确到小数点后8位。
输入样例
33
121
232
133
13
输出样例
103.07153164
时间限制
各测试点1秒
内存限制
你的程序将被分配40MB的运行空间
数据规模
1<=n<=2000
Problem3:
harm
最小伤害
问题描述
bb站在一个NxN的方阵中最左上角的格子里。
他可以从一个格子走到它右边和下边的格子里。
每一个格子都有一个伤害值。
他想在受伤害最小的情况下走到方阵的最右下角。
输入数据
第一行输入一个正整数n。
以下n行描述该矩阵。
矩阵中的数保证是不超过1000的正整数。
输出数据
输出最小伤害值。
样例输入
3
133
222
312
样例输出
8
数据规模
n<=1000
Problem4:
unique
寻找代表
问题描述
学校一共有n个社团,分别用1到n编号。
学校一共有m个人,分别用1到m编号。
每个人可以参加一个或多个社团,也可以不参加任何社团。
每个社团都需要选一个代表。
我们希望更多的人能够成为代表。
输入数据
第一行输入两个数n和m。
以下n行每行若干个数,这些数都是不超过m的正整数。
其中第i行的数表示社团i的全部成员。
每行用一个0结束。
输出数据
输出最多的能够成为代表的人数。
样例输入
44
120
120
120
12340
样例输出
3
数据范围
n,m<=200
Problem5:
typewrt
有故障的打字机
问题描述
一台打字机准备将1到10^n的数依次打出。
在打印过程中,这台打字机出现了一个故障:
数字“3”打不出来。
因此,所有含有数字“3”的数都没有被正确地打出。
试问没有被正确打出的数一共有多少个。
输入数据
输入一个正整数n。
输出数据
输出从1到10^n这些数中不能被正确打印的数的个数。
输入样例
2
输出样例
19
时间限制
各测试点1秒
内存限制
你的程序将被分配32MB的运行空间
数据规模
n<=1000
Problem6:
maxsum
最大约数和
问题描述
选取和不超过S的若干个不同的正整数,使得所有数的约数(不含它本身)之和最大。
输入数据
输入一个正整数S。
输出数据
输出最大的约数之和。
样例输入
11
样例输出
9
样例说明
取数字4和6,可以得到最大值(1+2)+(1+2+3)=9。
时间限制
各测试点1秒
内存限制
你的程序将被分配32MB的运行空间
数据规模
S<=1000
Problem7:
flu
流感会结束吗
问题描述
八中一共有n个学生。
这n个学生里一共有m对朋友关系。
在流感发作期,每个健康学生都要看望当天他生病的朋友(如果有的话),并在第二天被传染上疾病(除非他在免疫期内);
每个生病的学生在第二天都会痊愈,并在这一天具有免疫性。
从第三天起,看望生病的朋友将再次使他染上流感。
初始时(第一天),只有一个学生患有流感。
试问多少天后流感会自动结束。
输入数据
第一行输入两个正整数n和m。
接下来m行每行两个正整数x,y,表示编号为x的学生和编号为y的学生是一对朋友。
输入数据保证每一对朋友关系只描述一次。
最后一行输入一个正整数,代表初始时患有流感的学生的编号。
输出数据
如果流感永远不会结束,请输出-1,否则输出多少天后流感会结束。
答案保证不超过2000000000。
样例输入
44
12
23
34
24
1
样例输出
3
样例说明
第一天1号学生生病,2号学生访问他;
第二天2号学生生病,其它三个学生访问他,由于1号处于免疫期,未患流感;
第三天3、4号学生生病,2号学生访问他们。
第四天3、4号学生痊愈,流感结束。
时间限制
各测试点1秒
内存限制
你的程序将被分配32MB的运行空间
数据范围
n,m<=100000。
Problem8:
binary
二进制除法
问题描述
二进制数nmodm的结果是多少?
输入数据
第一行输入一个二进制数n。
第二行输入一个二进制数m。
输出数据
输出nmodm的结果。
输入样例
1010101010
111000
输出样例
1010
时间限制
各测试点1秒
内存限制
你的程序将被分配32MB的运行空间
数据规模
n的长度(二进制数的位数)<=200000;
m的长度(二进制数的位数)<=20。
Problem9:
xx
奇怪的函数
问题描述
使得x^x达到或超过n位数字的最小正整数x是多少?
输入数据
输入一个正整数n。
输出数据
输出使得x^x达到n位数字的最小正整数x。
输入样例
11
输出样例
10
时间限制
各测试点1秒
内存限制
你的程序将被分配32MB的运行空间
数据规模
n<=2000000000
Problem10:
minval
最小函数值
问题描述
有n个函数,分别为F1,F2,...,Fn。
定义Fi(x)=Ai*x^2+Bi*x+Ci(x∈N*)。
给定这些Ai、Bi和Ci,请求出所有函数的所有函数值中最小的m个(如有重复的要输出多个)。
输入数据
第一行输入两个正整数n和m。
以下n行每行三个正整数,其中第i行的三个数分别位Ai、Bi和Ci。
输入数据保证Ai<=10,Bi<=100,Ci<=10000。
输出数据
输出将这n个函数所有可以生成的函数值排序后的前m个元素。
这m个数应该输出到一行,用空格隔开。
样例输入
310
453
345
171
样例输出
9121219252931444554
时间限制
各测试点1秒
内存限制
你的程序将被分配32MB的运行空间
数据规模
n,m<=10000
Problem11:
matrix
矩阵乘法
问题描述
一个AxB的矩阵乘以一个BxC的矩阵将得到一个AxC的矩阵,时间复杂度为AxBxC。
矩阵乘法满足结合律(但不满足交换律)。
顺序给出n个矩阵的大小,请问计算出它们的乘积的最少需要花费多少时间。
输入数据
第一行输入一个正整数n,表示有n个矩阵。
接下来m行每行两个正整数Xi,Yi,其中第i行的两个数表示第i个矩阵的规模为XixYi。
所有的Xi、Yi<=100。
输入数据保证这些矩阵可以相乘。
输出数据
输出最少需要花费的时间。
样例输入
3
10100
1005
550
样例输出
7500
样例说明
顺序计算总耗时7500;先算后两个总耗时75000。
时间限制
各测试点1秒
内存限制
你的程序将被分配32MB的运行空间
数据范围
n<=100。
Problem12:
unimodal
单峰排列
问题描述
一个n的全排列A[i]是单峰的,当且仅当存在某个x使得A[1]A[x+1]>...>A[n]。
例如,对于9的全排列,125798643是一个单峰排列,123456789也是一个单峰排列,但356298741就不是。
试求n的单峰全排列的个数。
输入数据
输入一个数n。
输出数据
输出n的全排列中单峰排列的个数。
由于这个数可能很大,因此你只需要输出它mod1234567的值。
输入样例
3
输出样例
4
样例说明
共有以下4种方案:
123
132
231
321
时间限制
各测试点1秒
内存限制
你的程序将被分配32MB的运行空间
数据规模
n<=2000000000
Problem13:
grid
连接格点
问题描述
有一个M行N列的点阵,相邻两点可以相连。
一条纵向的连线花费一个单位,一条横向的连线花费两个单位。
某些点之间已经有连线了,试问至少还需要花费多少个单位才能使所有的点全部连通。
输入数据
第一行输入两个正整数m和n。
以下若干行每行四个正整数x1,y1,x2,y2,表示第x1行第y1列的点和第x2行第y2列的点已经有连线。
输入保证|x1-x2|+|y1-y2|=1。
输出数据
输出使得连通所有点还需要的最小花费。
输入样例
22
1121
输出样例
3
时间限制
各测试点1秒
内存限制
你的程序将被分配32MB的运行空间
数据规模
m,n<=1000
Problem14:
pair
无序字母对
问题描述
给定n个各不相同的无序字母对(区分大小写,无序即字母对中的两个字母可以位置颠倒)。
请构造一个有n+1个字母的字符串使得每个字母对都在这个字符串中出现。
输入数据
第一行输入一个正整数n。
以下n行每行两个字母,表示这两个字母需要相邻。
输出数据
输出满足要求的字符串。
如果没有满足要求的字符串,请输出“NoSolution”。
如果有多种方案,请输出前面的字母的ASCII编码尽可能小的(字典序最小)的方案
样例输入
4
aZ
tZ
Xt
aX
样例输出
XaZtX
时间限制
各测试点1秒
内存限制
你的程序将被分配32MB的运行空间
数据规模
不同的无序字母对个数有限,n的规模可以通过计算得到。
Problem15:
transfer
数字转换
问题描述
如果一个数x的约数和(不包括它本身,下同)比它本身小,那么x可以变成它的约数和;如果对于某个y>x且y的约数和为x,那么x也可以变成y。
例如,4可以变为3,1可以变为7。
限定所有的数字变换在不超过n的正整数范围内进行,求不断进行数字变换且没有重复数字出现的最多变换步数。
输入数据
输入一个正整数n。
输出数据
输出最少需要花费的时间。
样例输入
7
样例输出
3
样例说明
一种方案为:
4→3→1→7。
时间限制
各测试点1秒
内存限制
你的程序将被分配32MB的运行空间
数据范围
n<=50000。