
CCF CSP认证
2013年至今的每年的题目解析,c++实现
Muuuzi丶
花开堪折直须折,莫待无花空折枝
展开
-
【CCF- CSP 2022 6-01 归一化处理 满分题解】
c++中可以使用来控制精度,sqrt()来开方。原创 2023-05-27 16:36:31 · 130 阅读 · 0 评论 -
【CCF- CSP 2022 3-01 未初始化警告 满分题解】
就是看赋值语句的右边的变量有没有在之前语句的左边出现过,出现过无论有没有赋值成功都当做是初始化了。原创 2023-05-27 11:42:33 · 163 阅读 · 0 评论 -
【CCF- CSP 2021 12-01 序列查询 满分题解】
第一题一般较为简单,仔细观察样例一的示意图,即可找出计算 sum(A)的规律。原创 2023-05-27 10:15:32 · 92 阅读 · 0 评论 -
【CCF- CSP 202109-1 数组推导 满分题解】
有时候可以直接在输入流进行操作,另设数组反而会显得很麻烦。第一题一般不难,观察找规律即可。原创 2023-05-26 10:37:43 · 70 阅读 · 0 评论 -
【CCF- CSP 202104-2 邻域均值 二维数组前缀和满分题解】
掌握二维数组的前缀和求法。可以采用外圈补零来统一求前缀和的过程不用另设一个前缀和数组,直接在原数组上操作除法时一定要统一精度。原创 2023-05-26 09:56:55 · 708 阅读 · 0 评论 -
【CCF- CSP 202104-1灰度直方图 满分题解】
首先读入三个数,分别代表矩阵的长度、宽度和灰度范围。使用数组h来存储每个灰度值出现的次数 接下来对于每一个矩阵,最后遍历高度范围,输出每个灰度值在矩阵中出现的次数。原创 2023-05-25 10:06:34 · 174 阅读 · 0 评论 -
【CCF- CSP 202012-02 期末预测之最佳阈值 满分题解】
本题若是直接暴力求解只能得70分!原创 2023-05-25 09:35:51 · 321 阅读 · 0 评论 -
【CCF-CSP 2020-12-1 期末预测之安全指数 满分题解-C++】
【CCF-CSP 2020-12-1 期末预测之安全指数 满分题解-C++】原创 2023-05-25 09:31:52 · 66 阅读 · 0 评论 -
【CCF-CSP 2020-9-2 风险人群筛查 满分题解-C++】
我们可以使用一个循环来读入每位居民的行动轨迹。对于一位居民,我们可以设一个计数器来记录他在指定区域内停留的次数和停留的最长时间。然后在每次读入坐标时,判断该坐标是否在指定区域内。如果是,则将计数器加1,并更新它的最长停留时间。如果不是,则重置计数器为0,因为要。最后统计有多少位居民经过了指定区域(即停留次数大于0),以及停留时间超过给定时长k的居民数量。原创 2023-05-23 11:43:35 · 174 阅读 · 0 评论 -
【CCF-CSP 2020-9-1 称检测点查询 结构体满分题解-C++】
首先读入点的个数、给定点的 x 和 y 坐标。接着,循环读入每一个点的坐标,并计算该点到给定点的欧几里得距离。把每个点的下标和它到给定点的距离存储在一个结构体数组中。之后,对所有点按照到给定点的距离进行排序,若距离相同则按照下标从小到大排序。最后,输出距离最小的前三个点的下标。原创 2023-05-22 11:53:37 · 242 阅读 · 0 评论 -
【CCF-CSP 2020-6-2 稀疏向量 map满分题解-C++】
代码思路:创建一个map接收键和值,然后遍历第二个数组检查键是否已存在与map中,若存在则进行内积运算,最后输出;原创 2023-05-22 10:38:15 · 111 阅读 · 0 评论 -
【CCF-CSP 2020-6-1 线性分类器满分题解-C++】
【代码】【CCF-CSP 2020-6-1 线性分类器满分题解-C++】原创 2023-05-21 11:49:09 · 97 阅读 · 0 评论 -
【CCF-CSP 2019-12-2 回收站选址 满分题解-C++】
总分不超过4,然后输出每个分数对应的垃圾桶个数。原创 2023-05-20 12:56:32 · 214 阅读 · 0 评论 -
【CCF-CSP 2019-12-1 报数 满分题解-C++】
然后依次遍历1~n的数字,对于每个数字,判断是否为数字7或者7的倍数,如果是,则在当前人处停留,将当次总数减1,并将停留次数加1。输出共四行,每行一个整数,依次表示甲乙丙丁四人在游戏过程中跳过的次数。在丁报出24后,四个人总计报出了20个数,游戏结束。甲:13,乙:跳过,丙:15,丁:16。甲:跳过,乙:18,丙:19,丁:20。甲:跳过,乙:22,丙:23,丁:24。甲:9,乙:10,丙:11,丁:12。甲:5,乙:6,丙:跳过,丁:8。甲:1,乙:2,丙:3,丁:4。最后输出每个人停留的次数即可。原创 2023-05-19 00:50:57 · 451 阅读 · 0 评论 -
【CCF-CSP 2018-09-1 买菜 满分题解-C++】
店主们希望自己的菜价和其他商店的一致,第二天,每一家商店都会根据他自己和相邻商店的价格调整自己的价格。具体的,每家商店都会将第二天的菜价设置为自己和相邻商店第一天菜价的平均值(用去尾法取整)。注意,编号为1的商店只有一个相邻的商店2,编号为n的商店只有一个相邻的商店n-1,其他编号为i的商店有两个相邻的商店i-1和i+1。对于其他商店(编号从2到n-1),有两个相邻商店,计算公式为(b[i-1]+b[i]+b[i+1])/3;当商店编号为n时,只有一个相邻商店,计算公式为(b[n-1]+b[n])/2;原创 2023-05-16 00:00:12 · 276 阅读 · 0 评论 -
【CCF-CSP 2018-03-1 跳一跳 满分题解-C++】
跳到方块中心时,若上一次的得分为1分或这是本局游戏的第一次跳跃则此次得分为2分,否则此次得分比上一次得分多两分(即连续跳到方块中心时,总得分将+2,+4,+6,+8…输入包含多个数字,用空格分隔,每个数字都是1,2,0之一,1表示此次跳跃跳到了方块上但是没有跳到中心,2表示此次跳跃跳到了方块上并且跳到了方块中心,0表示此次跳跃没有跳到方块上(此时游戏结束)。简化后的跳一跳规则如下:玩家每次从当前方块跳到下一个方块,如果没有跳到下一个方块上则游戏结束。近来,跳一跳这款小游戏风靡全国,受到不少玩家的喜爱。原创 2023-05-15 00:58:34 · 213 阅读 · 0 评论 -
【CCF-CSP 2017-12-2 游戏-C++】
游戏开始,从1号小朋友开始顺时针报数,接下来每个小朋友的报数是上一个小朋友报的数加1。若一个小朋友报的数为k的倍数或其末位数(即数的个位)为k,则该小朋友被淘汰出局,不再参加以后的报数。当游戏中只剩下一个小朋友时,该小朋友获胜。有n个小朋友围成一圈玩游戏,小朋友从1至n编号,2号小朋友坐在1号小朋友的顺时针方向,3号小朋友坐在2号小朋友的顺时针方向,……,1号小朋友坐在n号小朋友的顺时针方向。对于所有评测用例,1 ≤ n ≤ 1000,1 ≤ k ≤ 9。输出一行,包含一个整数,表示获胜的小朋友编号。原创 2023-05-14 23:47:46 · 138 阅读 · 0 评论 -
【CCF-CSP 2017-12-1 最小差值-C++】
对于所有评测用例,2 ≤ n ≤ 1000,每个给定的整数都是不超过10000的正整数。给定n个数,请找出其中相差(差的绝对值)最小的两个数,输出它们的差值的绝对值。第二行包含n个正整数,相邻整数之间使用一个空格分隔。相差最小的两个数是5和4,它们之间的差值是1。有两个相同的数3,它们之间的差值是0.输入第一行包含一个整数n。输出一个整数,表示答案。内存限制: 256.0MB。代码思路:排序然后遍历比较。试题名称: 最小差值。时间限制: 1.0s。原创 2023-05-14 12:48:47 · 93 阅读 · 0 评论 -
【CCF-CSP 2017-09-1 打酱油-C++】
我们可以将这个问题拆分成两个部分:首先,考虑用已有的钱数能够购买到多少瓶酱油。代码思路:本题中,已知小明手里有 N 元钱可以购买酱油,每瓶酱油的价格是 10 元,同时商家提供优惠券,买 3 瓶送 1 瓶,或者买 5 瓶送 2 瓶。酱油10块钱一瓶,商家进行促销,每买3瓶送1瓶,或者每买5瓶送2瓶。把80元分成30元和50元,分别买3瓶和5瓶,其中3瓶送1瓶,5瓶送2瓶,共得到11瓶。把40元分成30元和10元,分别买3瓶和1瓶,其中3瓶送1瓶,共得到5瓶。原创 2023-05-13 18:55:58 · 176 阅读 · 0 评论 -
【CCF-CSP 2017-03-1 分蛋糕-C++】
小明今天生日,他有n块蛋糕要分给朋友们吃,这n块蛋糕(编号为1到n)的重量分别为a1, a2, …小明的朋友们已经排好队准备领蛋糕,对于每个朋友,小明总是先将自己手中编号最小的蛋糕分给他,当这个朋友所分得蛋糕的重量不到k时,再继续将剩下的蛋糕中编号最小的给他,直到小明的蛋糕分完或者这个朋友分到的蛋糕的总重量大于等于k。对于所有评测用例,1 ≤ n ≤ 1000,1 ≤ k ≤ 10000,1 ≤ ai ≤ 1000。第一个朋友分到了前3块蛋糕,第二个朋友分到了第4、5块蛋糕,第三个朋友分到了最后一块蛋糕。原创 2023-05-13 01:02:18 · 108 阅读 · 0 评论 -
【CCF-CSP 2016-12-2 工资计算-C++】
例如,如果小明的税前工资为10000元,则A=10000-3500=6500元,其中不超过1500元部分应缴税1500×3%=45元,超过1500元不超过4500元部分应缴税(4500-1500)×10%=300元,超过4500元部分应缴税(6500-4500)×20%=400元。总共缴税745元,税后所得为9255元。1) 个人所得税起征点为3500元,若S不超过3500,则不交税,3500元以上的部分才计算个人所得税,令A=S-3500元;3) A中超过1500元未超过4500元的部分,税率10%;原创 2023-05-11 18:21:25 · 123 阅读 · 0 评论 -
【CCF-CSP 201612-1中间数 两种方法满分题解-C++】
an中,如果存在某个数,大于它的整数数量等于小于它的整数数量,则称其为中间数。在一个序列中,可能存在多个下标不相同的中间数,这些中间数的值是相同的。如果约定序列的中间数存在,则输出中间数的值,否则输出-1表示不存在中间数。输入的第一行包含了一个整数n,表示整数序列中数的个数。给定一个整数序列,请找出这个整数序列的中间数的值。注意:如果输出只有一个数的话,那么就是其本身!比5小的数有2个,比5大的数也有2个。在序列中的4个数都不满足中间数的定义。在序列中的5个数都不满足中间数的定义。保存当前遍历到的数。原创 2023-05-10 00:21:54 · 716 阅读 · 0 评论 -
【CCF-CSP 2016-9-2 火车购票-C++ 满分题解】
为方便起见,我们用1到100来给所有的座位编号,第一排是1到5号,第二排是6到10号,依次类推,第20排是96到100号。为方便起见,我们用1到100来给所有的座位编号,第一排是1到5号,第二排是6到10号,依次类推,第20排是96到100号。第二行包含n个整数,每个整数p在1到5之间,表示要购入的票数,相邻的两个数之间使用一个空格分隔。第二行包含n个整数,每个整数p在1到5之间,表示要购入的票数,相邻的两个数之间使用一个空格分隔。对于购票指令p,输出p张车票的编号,按从小到大排序。原创 2023-05-09 00:28:32 · 465 阅读 · 0 评论 -
【CCF-CSP 2016-9-1 最大波动-C++】
小明正在利用股票的波动程度来研究股票。小明拿到了一只股票每天收盘时的价格,他想知道,这只股票连续几天的最大波动值是多少,即在这几天中某天收盘价格与前一天收盘价格之差的绝对值最大是多少。股票每一天的价格为1到10000之间的整数。输入的第一行包含了一个整数n,表示小明拿到的收盘价格的连续天数。 遍历数组,记录每个相邻位置差的绝对值,找出其最大值,输出。第四天和第五天之间的波动最大,波动值为|3-7|=4。输出一个整数,表示这只股票这n天中的最大波动值。第二行包含n个正整数,依次表示每天的收盘价格。原创 2023-05-08 00:33:55 · 97 阅读 · 0 评论 -
【CCF-CSP 2016-4-1 折点计数-C++】
注:在判断是否为折点时,可以用区间乘积的方法判断,即判断(arr[i] - arr[i - 1]) * (arr[i] - arr[i + 1])是否大于0。如果大于0,则说明(arr[i] - arr[i - 1])和(arr[i] - arr[i + 1])符号相同,即arr[i]与其相邻元素的大小关系相同。若arr[i]比其相邻元素都大或都小,则说明arr[i]是一个折点。如果某天之前销售量在增长,而后一天销售量减少,则称这一天为折点,反过来如果之前销售量减少而后一天销售量增长,也称这一天为折点。原创 2023-05-07 12:59:08 · 94 阅读 · 0 评论 -
【CCF-CSP 2015-12-2 消除类游戏-C++】
消除类游戏是深受大众欢迎的一种游戏,游戏在一个包含有n行m列的游戏棋盘上进行,棋盘的每一行每一列的方格上放着一个有颜色的棋子,当一行或一列上有连续三个或更多的相同颜色的棋子时,这些棋子都被消除。如果一个方格中的棋子被消除,则对应的方格输出0,否则输出棋子的颜色编号。现在给你一个n行m列的棋盘,棋盘中的每一个方格上有一个棋子,请给出经过一次消除后的棋盘。棋盘中所有的1以及最后一行的3可以被同时消除,其他的方格中的棋子均保留。棋盘中第4列的1和第4行的2可以被消除,其他的方格中的棋子均保留。原创 2023-05-07 01:00:18 · 325 阅读 · 0 评论 -
【CCF-CSP 2015-12-1 数位之和-C++】
需要注意的是,在循环中,当n取完最后一位数字后,条件n>0仍然成立,此时n/10=0,循环终止。同时,为了保证程序的健壮性,可以添加对n是否为负数或超过题目范围的判断。20151220的各位数字之和为2+0+1+5+1+2+2+0=13。所有评测用例满足:0 ≤ n ≤ 1000000000。给定一个十进制整数n,输出n的各位数字之和。输出一个整数,表示答案。内存限制: 256.0MB。试题名称: 数位之和。时间限制: 1.0s。原创 2023-05-06 01:01:50 · 263 阅读 · 0 评论 -
【CCF-CSP 2015-09-2 日期计算-C++】
需要注意的是,闰年的条件是年份能够被4整除并且不能被100整除,或者能够被400整除。同时,当通过循环计算月份时,需要将当前日期减去上一个月份的天数,得到剩下的天数。输入的第一行包含一个整数y,表示年份,年份在1900到2015之间(包含1900和2015)。给定一个年份y和一个整数d,问这一年的第d天是几月几日?输出两行,每行一个整数,分别表示答案的月份和日期。1) 年份是4的整数倍,而且不是100的整数倍;输入的第二行包含一个整数d,d在1至365之间。2) 年份是400的整数倍。原创 2023-05-06 00:41:31 · 152 阅读 · 0 评论 -
【CCF-CSP 2015-09-1 数列分段-C++】
8 8 8是第一段,0是第二段,12 12是第三段,倒数第二个整数8是第四段,最后一个0是第五段。第二行包含n个整数a1, a2, …, an,表示给定的数列,相邻的整数之间用一个空格分隔。给定一个整数数列,数列中连续相同的最长整数序列算成一段,问数列中共有多少段?需要注意的是,循环变量的下标从0开始计数,因此第2个循环的终止条件应该是。输入的第一行包含一个整数n,表示数列中整数的个数。输出一个整数,表示给定的数列有多个段。内存限制: 256.0MB。试题名称: 数列分段。时间限制: 1.0s。原创 2023-05-06 00:07:10 · 130 阅读 · 0 评论 -
【CCF-CSP 2015-03-2 数字排序-C++】
输出多行,每行包含两个整数,分别表示一个给定的整数和它出现的次数。如果两个整数出现的次数一样多,则先输出值较小的,然后输出值较大的。给定n个整数,请统计出每个整数出现的次数,按出现次数从多到少的顺序输出。第二行包含n个整数,相邻的整数之间用一个空格分隔,表示所给定的整数。1 ≤ n ≤ 1000,给出的数都是不超过1000的非负整数。输入的第一行包含一个整数n,表示给定数字的个数。试题编号: 201503-2。内存限制: 256.0MB。试题名称: 数字排序。时间限制: 1.0s。原创 2023-05-05 00:41:34 · 140 阅读 · 0 评论 -
【CCF-CSP 2014-12-1 门禁系统-C++】
涛涛最近要负责图书馆的管理工作,需要记录下每天读者的到访情况。每位读者有一个编号,每条记录用读者的编号来表示。给出读者的来访记录,请问每一条记录中的读者是第几次出现。输出一行,包含n个整数,由空格分隔,依次表示每条记录中的读者编号是第几次出现。代码思路:将输入的值作为数组的索引值,每输入一次,对应的数组值加1,然后输出。第二行包含n个整数,依次表示涛涛的记录中每位读者的编号。1≤n≤1,000,读者的编号为不超过n的正整数。输入的第一行包含一个整数n,表示涛涛的记录条数。试题编号: 201412-1。原创 2023-05-03 18:26:03 · 151 阅读 · 0 评论 -
【CCF-CSP 2014-09-2 画图-C++】
最简单的方法实现原创 2023-05-03 13:01:31 · 232 阅读 · 0 评论 -
【CCF-CSP 2014-09-1 相邻数对-C++】
值正好相差1的数对包括(2, 3), (6, 7), (7, 8)。给定n个不同的整数,问这些数中有多少对整数,它们的值正好相差1。1原创 2023-05-02 18:25:09 · 151 阅读 · 0 评论 -
【CCF-CSP 2014-03-2 窗口-C++】
每行包含四个非负整数 x1, y1, x2, y2,表示该窗口的一对顶点坐标分别为 (x1, y1) 和 (x2, y2)。窗口的边界上的点也属于该窗口。窗口之间有层次的区别,在多于一个窗口重叠的区域里,只会显示位于顶层的窗口里的内容。如果该次鼠标点击选择了一个窗口,则输出这个窗口的编号(窗口按照输入中的顺序从 1 编号到 N);当你点击屏幕上一个点的时候,你就选择了处于被点击位置的最顶层窗口,并且这个窗口就会被移到所有窗口的最顶层,而剩余的窗口的层次顺序不变。最后点击的 (0, 5) 不属于任何窗口。原创 2023-05-02 00:53:52 · 271 阅读 · 0 评论 -
【CCF-CSP 2014-03-1 相反数-C++】
有 N 个非零且各不相同的整数。请你编一个程序求出它们中有多少对相反数(a 和 -a 为一对相反数)。第二行为 N 个用单个空格隔开的非零整数,每个数的绝对值不超过1000,保证这些整数各不相同。代码思路:1.定义一个哈希表,将数字插入哈希表中,并更新相关的布尔值为true。 2.遍历哈希表,如果发现某数的相反数存在,计数器res++。第一行包含一个正整数 N。只输出一个整数,即这 N 个数中包含多少对相反数。试题编号: 201403-1。时间限制: 1.0s。原创 2023-04-29 00:11:09 · 189 阅读 · 0 评论 -
【CCF-CSP 201312-3 最大的矩形-C++】
在横轴上放了n个相邻的矩形,每个矩形的宽度是1,而第i(1 ≤ i ≤ n)个矩形的高度是hi。例如,下图中六个矩形的高度就分别是3, 1, 6, 5, 2, 3。请找出能放在给定直方图里面积最大的矩形,它的边要与坐标轴平行。对于上面给出的例子,最大矩形如下图所示的阴影部分,面积是10。计算以该位置为高度的矩形面积(宽度为right-left-1),并更新最大面积maxs。第一行包含一个整数n,即矩形的数量(1 ≤ n ≤ 1000)。输出一行,包含一个整数,即给定直方图内的最大矩形的面积。原创 2023-04-28 00:40:59 · 61 阅读 · 0 评论 -
【CCF-CSP 201312-2 ISBN号码-C++】
每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。以此类推,用所得的结果mod 11,所得的余数即为识别码,如果余数为10,则识别码为大写字母X…输出一行,假如输入的ISBN号码的识别码正确,那么输出“Right”,否则,按照规定的格式,输出正确的ISBN号码(包括分隔符“-”);时间限制: 1.0s。原创 2023-04-27 01:07:54 · 188 阅读 · 1 评论 -
【CCF-CSP 201312-1出现次数最多的数 -C++】
输入的第二行有n个整数s1, s2, …, sn (1 ≤ si ≤ 10000, 1 ≤ i ≤ n)。相邻的数用空格分隔。给定n个正整数,找出它们中出现次数最多的数。如果这样的数有多个,请输出其中最小的一个。输入的第一行只有一个正整数n(1 ≤ n ≤ 1000),表示数字的个数。输出这n个次数中出现次数最多的数。如果这样的数有多个,输出其中最小的一个。试题名称: 出现次数最多的数。内存限制: 256.0MB。时间限制: 1.0s。原创 2023-04-26 01:02:33 · 113 阅读 · 0 评论