2024年全国青少年信息素养大赛C++算法创意实践挑战赛_小学组_复赛_真题
复赛
真题
小学
2024
2025-04-11 14:45:16
165次
一、编程题
战胜白蚁
【题目描述】
小明因为很长时间没有回家,发现他家被白蚁给入侵了,白蚁特别喜欢啃食木头, 因此他家的地板就遭殃了。小明要抢救被白蚁破坏的木地板,每个木地板由于白蚁 的数量不同,每个地板进行维修的时间也不同,同时要争取及时修理越好,否则超 过某个时间,这块地板就会被严重破坏掉。小明只能一块一块的清理白蚁,不能并 行操作,也就是不能同时修多块地板。
请编写一个程序,根据每个地板的修理时间和如果不修理就会被白蚁完全损毁的 时间,进行一个最合理的排序,使得可以抢救最多的木板。输入是木板的数目,以 及每个木板的维修时间和被破坏的时间,输出是能抢救的最多木板的数量。
【输入格式】
第一行是一个整数 N(N 小于 50000),接下来 N 行每行两个整数 T1,T2 描述一个 要修理的木板:修理这个木板需要 T1 秒,如果在 T2 秒之内还没有修理完成,这个木 板就报废了。
【输出格式】
输出一个整数 S,表示最多可以抢修 S 个木板。
【样例输入】
4 100 200 200 1300 1000 1250 2000 3200
【样例输出】
3
【注意事项】
请严格按要求输出,不要多余的打印语句,例如:“输入x=... ” 等多余内容。 本程序的代码放在同一个源文件中,调试通过后,拷贝提交该源码。注意: main 函 数需要返回 0。注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或 操作系统的特殊函数。注意 : 所有依赖的函数必须明确地在源文件中 #include <xxx>, 不能通过工程设置而省略常用头文件。
【知识点】 全国青少年信息素养大赛C++编程挑战赛
翻转数相乘
【题目描述】
假设一个 n 位数,如 a1a2a3…an ,其中 ai 是这个数的第 i 位上的数字,且这个 n 位数不是每个位都相等的数字,例如不是 2222 或类似。如果有一个整数 x,并且 1<x<10,使得 a1a2a3…an*x=anan-1an-2…a1 ,求 x,其中 a1 和 an 不能为 0,如果 x 无解, 则输出0,如果有多个x,则从小到大输出所有x 的解,中间用空格隔开。例如:一 个 5 位数,ABCDE * ? = EDCBA,其中 A、B、C、D、E 是个位整数,ABCDE 和 EDCBA 是一个万位数,求符合这个等式的乘数。
【输入格式】
输入 1 个数,表示要求解的 n 位数。
【输出格式】
输出表示所有可能的乘数,并按照从小到大排列,用回车隔开。
【样例输入】
6
【样例输出】
4 9
【注意事项】
请严格按要求输出,不要多余的打印语句,例如:“输入x=... ” 等多余内容。 本程序的代码放在同一个源文件中,调试通过后,拷贝提交该源码。注意: main 函 数需要返回 0。注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或 操作系统的特殊函数。注意 : 所有依赖的函数必须明确地在源文件中 #include <xxx>, 不能通过工程设置而省略常用头文件。
【知识点】 全国青少年信息素养大赛C++编程挑战赛
将整数换成分数
【题目描述】
一个小于 100 万的正整数 n,尝试把 n 变成带分数形式,也就是 n=a+b/c,其中 a,b,c 是三个正整数,并且数字 1~9(不含 0)在 a、b、c 中,必须出现,且只能 出现一次。例如:100=3 + 69258/714,其中 1 到 9 这 9 个数字全都出现了,并且只 出现一次。当然,100 还等于 82 + 3546/197,也就是说将 100 变成带分数形式,会 有两种组合方式。事实上 100,可以写成 11种 1 到 9 组成整数加上分数的形式。
请编写一个程序,根据一个输入 N,程序输出该数字用数码 1~9 不重复不遗漏地 组成带分数表示的全部可能性。不要求输出每个表示,只输出有多少种表示法!
【输入格式】
输入一行,表示要分解的正整数。
【输出格式】
输出一行,表示有多少分法。
【样例输入】
100
【样例输出】
11
【注意事项】
请严格按要求输出,不要多余的打印语句,例如:“输入x=... ” 等多余内容。 本程序的代码放在同一个源文件中,调试通过后,拷贝提交该源码。注意: main 函 数需要返回 0。注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或 操作系统的特殊函数。注意 : 所有依赖的函数必须明确地在源文件中 #include <xxx>, 不能通过工程设置而省略常用头文件。
【知识点】 全国青少年信息素养大赛C++编程挑战赛
吉利号码
【题目描述】
中国人喜欢图吉利,包括吉利数字,例如数字 8 或者数字6,尤其是连着的数字 更加喜欢,比如手机号码,汽车车牌,房间号码等等。有需求就会有市场,吉利数 字的号码,往往意味着更贵的价格。请你根据以下规则,编写一个程序,根据规则 给一个号码设置相应的价格。
具体规则如下:
1. 正常号码是 100 元。
2. 含有:6,8 任何一个数字,每出现一次加分50 元,例如 4326,6875,9918 都符合加分标准。其中,6875 被加 2 个 50 元,就相当于加 100 元;9918 被 加 50 元。
3. 如果出现升序或者降序的情况,不管升序还是降序,号码涨价 3 倍。例如: 5678,4321 都要贵 3 倍。注意:例如 5567,4331 等有相同元素的号码不算降 序、升序。
4. 如果出现三个相同数字情况,都涨 6 倍。例如:4888,6665,7777 都满足加分的标准。注意:7777 因为满足这条标准两次,所以这条规则给它涨两个 6 倍,也就是 12 倍。
5. 如果符合 AABB 或者 ABAB 模式的,价格涨一倍。例如:2255,3939,7777 都符 合这个模式,所以都会涨价。注意:7777 因为满足这条标准两次,所以这条 标准给它涨 2 倍,同时 7777 也是连号,也会在之前连号的基础上继续涨价。
请编写程序按照所有规则,求一个号码的最终价格!要求程序从标准输入接收数 据,在标准输出上输出结果。
【输入格式】
输入共 1 行,输入一个四位正整数,就是待计算的号码。
【输出格式】
输出共 1 行,一个整数,表示这个号码对应的销售价格。
【样例输入】
6543
【样例输出】
450
【注意事项】
请严格按要求输出,不要多余的打印语句,例如:“输入x=... ” 等多余内容。 本程序的代码放在同一个源文件中,调试通过后,拷贝提交该源码。注意: main 函 数需要返回 0。注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或 操作系统的特殊函数。注意 : 所有依赖的函数必须明确地在源文件中 #include <xxx>, 不能通过工程设置而省略常用头文件。
【知识点】 全国青少年信息素养大赛C++编程挑战赛
