百练-2017研究生上机测试(待续)

作为一个编程菜鸡,先刷刷前几题,八道题目争取6题有思路,5题能写出来,3题能AC(大佬勿嘲笑)。由于部分题目已经关闭,无法看到是否AC(以下代码可能无法通过全部测试用例),如有错误,请指出,O(∩_∩)O谢谢。

A:奖学金

全局题号7908 提交次数207 尝试人数40 通过人数32

总时间限制:
1000ms
内存限制:
65536kB
描述
某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生发奖学金。期末,每个学生都有3门课的成绩:语文、数学、英语。先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,那么规定学号小的同学排在前面,这样,每个学生的排序是唯一确定的。

任务:先根据输入的3门课的成绩计算总分,然后按上述规则排序,最后按排名顺序输出前五名名学生的学号和总分。注意,在前5名同学中,每个人的奖学金都不相同,因此,你必须严格按上述规则排序。例如,在某个正确答案中,如果前两行的输出数据(每行输出两个数:学号、总分) 是:

7 279

5 279

这两行数据的含义是:总分最高的两个同学的学号依次是7号、5号。这两名同学的总分都是 279 (总分等于输入的语文、数学、英语三科成绩之和) ,但学号为7的学生语文成绩更高一些。如果你的前两名的输出数据是:

5 279

7 279

则按输出错误处理,不能得分。

输入
包含n+1行:

第1行为一个正整数n,表示该校参加评选的学生人数。

第2到n+1行,每行有3个用空格隔开的数字,每个数字都在0到100之间。第j行的3个数字依次表示学号为 j-1 的学生的语文、数学、英语的成绩。每个学生的学号按照输入顺序编号为1~n (恰好是输入数据的行号减1)。

所给的数据都是正确的,不必检验。

50%的数据满足:各学生的总成绩各不相同;
100%的数据满足: 6<=n<=300。

输出
共有5行,每行是两个用空格隔开的正整数,依次表示前5名学生的学号和总分。
样例输入

样例输出

C++实现


B:高次同余方程求解

全局题号12750 提交次数69 尝试人数34 通过人数29

总时间限制: 1000ms 内存限制: 65536kB描述

解高次同余方程是数论里的一个基础问题。现在邀请你来解一个简单的高次同余方程,xk=1(mod n)。(注:xk=1(mod  n)的意思是xk除以n的余数为1)

数据范围:n和k是整数,且0 < k < n < 1000

输入两个整数,分别为k和n。输出从小到大输出方程的所有满足0 < x < n的整数解x,每行输出一个。

样例输入

样例输出

提示需要注意中间计算结果的可能范围。
(a * b) % p = ((a % p) * (b % p)) % p

样例输入:
398 702
样例输出
1
53
649
701

C++实现


C:二维数组回形遍历

全局题号7545 提交次数78 尝试人数35 通过人数29

总时间限制:
1000ms
内存限制:
65536kB
描述
给定一个row行col列的整数数组array,要求从array[0][0]元素开始,按回形从外向内顺时针顺序遍历整个数组。如图所示:

输入
输入的第一行上有两个整数,依次为row和col。
余下有row行,每行包含col个整数,构成一个二维整数数组。
(注:输入的row和col保证0 < row < 100, 0 < col < 100)
输出
按遍历顺序输出每个整数。每个整数占一行。
样例输入

样例输出

C++实现


H:拓扑排序

全局题号4865 提交次数30 尝试人数17 通过人数16

总时间限制:
10000ms
内存限制:
1000kB
描述
给出一个图的结构,输出其拓扑排序序列,要求在同等条件下,编号小的顶点在前
输入
若干行整数,第一行有2个数,分别为顶点数v和弧数a,接下来有a行,每一行有2个数,分别是该条弧所关联的两个顶点编号
输出
若干个空格隔开的顶点构成的序列(用小写字母)
样例输入
样例输出

C++实现

 

 

留下评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注