2025信息素养大赛C++复赛练习
2024信息素养大赛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, 不能通过工程设置而省略常用头文件。 -
翻转数相乘
【题目描述】
假设一个 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, 不能通过工程设置而省略常用头文件。 -
吉利号码
【题目描述】
中国人喜欢图吉利,包括吉利数字,例如数字 8 或者数字 6,尤其是连着的数字更加喜欢,比如手机号码,汽车车牌,房间号码等等。有需求就会有市场,吉利数字的号码,往往意味着更贵的价格。请你根据以下规则,编写一个程序,根据规则给一个号码设置相应的价格。具体规则如下: -
正常号码是 100 元。
-
含有:6,8 任何一个数字,每出现一次加分。50 元,例如 4326,6875,9918都符合加分标准。其中,6875 被加 2 个 50 元,就相当于加 100 元;9918 被加 50 元。
-
如果出现升序或者降序的情况,不管升序还是降序,号码涨价 3 倍。例如:5678,4321 都要贵 3 倍。注意:例如 5567,4331 等有相同元素的号码不算降序、升序。
-
如果出现三个相同数字情况,都涨 6 倍。例如:4888,6665,7777 都满足加分的标准。注意:7777 因为满足这条标准两次,所以这条规则给它涨两个 6倍,也就是 12 倍。
-
如果符合 AABB 或者 ABAB 模式的,价格涨一倍。例如:2255,3939,7777 都符合这个模式,所以都会涨价。注意:7777 因为满足这条标准两次,所以这条标准给它涨 2 倍,同时 7777 也是连号,也会在之前连号的基础上继续涨价。请编写程序按照所有规则,求一个号码的最终价格!要求程序从标准输入接收数据,在标准输出上输出结果。
【输入格式】
输入共 1 行,输入一个四位正整数,就是待计算的号码。
【输出格式】
输出共 1 行,一个整数,表示这个号码对应的销售价格。
【样例输入】(测试数据不包含本样例)
6543
【样例输出】
450
【注意事项】
请严格按要求输出,不要多余的打印语句,例如:“输入 x=...” 等多余内容。本程序的代码放在同一个源文件中,调试通过后,拷贝提交该源码。注意: main 函数需要返回 0。注意: 只使用 ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。注意: 所有依赖的函数必须明确地在源文件中 #include, 不能通过工程设置而省略常用头文件。 -
过河问题
【题目描述】
有 n 个人要渡河,但只有一条小船,这条小船一次只能坐下最多两个人,并且只有一副船桨。每个人划船的速度不一样,如果两个人一起上船,由于重量变大,划船的速度基本上相当于是划船速度最慢的那个人速度。假设给出每个人单独划船过河所花费的时间 Ti,请问所有人都过河的总时间最短的时间?
【输入格式】
输入两行,第一行是一个整数,表示要过河的 n 个人。第二行,是 n 个整数,按速度从快到慢排序好的每个人划船过河的时间。
【输出格式】
输出一行,给出所有人过河所花费最短的时间。
【样例输入 1】(测试数据不包含本样例)
3
1 2 3
【样例输出 1】
6
【样例输入 2】(测试数据不包含本样例)
4
1 2 5 10
【样例输出 2】
17
【注意事项】
请严格按要求输出,不要多余的打印语句,例如:“输入 x=...” 等多余内容。本程序的代码放在同一个源文件中,调试通过后,拷贝提交该源码。注意: main 函数需要返回 0。注意: 只使用 ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。注意: 所有依赖的函数必须明确地在源文件中 #include, 不能通过工程设置而省略常用头文件。
参考
2024C++信息素养大赛-智能算法应用挑战赛_复赛真题(广东省)题目+参考答案和详细解析
2023信息素养大赛C++复赛真题
1 . 修复机器人的对话词库错误
【题目描述】
基于人工智能技术的智能陪伴机器人的语言词库被黑客的病毒感染了,感染方式是在单词中的某个字母被增加了两次,例如“hello”变成了“heeello ” 。空格字符被替换为长度不固定的数字乱码,请修复它。
【输入格式】
输入一行字符串 (字符串中无空格) 。这一行是被感染的字符串。
【输出格式】
输出一行对应的正确字符串。
【样例输入】(测试数据不包含本样例) Good24565morrrning
【样例输出】 Good morning
2 . 定制架子问题
【题目描述】
李莳花要做一个架子,把她喜欢的摆件叠放起来,她的每个摆件的位置顺序 是固 定的。这个架子的宽度是 W ,每层排放的摆件不能超过这个宽度,每层架 子的高度不 能低于最高的摆件的高度。假设,给出排列好的每个摆件的宽度Wi和高度 Hi,请计算需要最少多高的架子。
【输入格式】
输入的第一行有 2 个数字,一个是摆件的个数n ,和架子的宽度 W 。 以下摆件个数n行,每行的第一个数是摆件的宽度 Wi 和高度 Hi。
【输出格式】
输出放置摆件架子的最低高度。
【样例输入】(测试数据不包含本样例)
5 5
2 1
1 2
1 3
2 3
2 2
【样例输出】 5
3 . 输出多进制数
【题目描述】
输入一个小于20的正整数n ,要求按从小到大的顺序输出所有的 n 位 m进制数, 每个数占一行。
【输入格式】
输入一个小于 20 的正整数n ,和一个小于 10 的正整数m。
【输出格式】
按从小到大的顺序输出所有的 n 位 m 进制数,每个数占一行。
【样例输入】(测试数据不包含本样例)
3 2
【样例输出】
001
010
011
100
101
110
111
4 . 在 AI 下棋程序中,计算猫抓老鼠游戏的概率
【题目描述】
有这样一个游戏:在一个n *n的格子棋盘里,n 是奇数;有两种棋子,一个是只 能横向移动的棋子猫,一个是可以上下左右移动的棋子老鼠。假设老鼠在棋盘的正中央,第一步老鼠将进行上下左右的随机移动。棋子猫在从棋盘的中间行的最左边向棋盘的最右边移动,棋子猫每次移动只能是从左到右移动一步,第一步是猫位于 棋盘的中间行的最左边格子。请问:在猫移动到棋盘外面前,会有多大概率抓到老鼠?
【输入格式】
输入一个大于 1 的奇数n ,表示棋盘的大小。
【输出格式】
棋子猫抓到棋子老鼠的概率。(小数四舍五入保留4 位有效数字)
【样例输 入】(测试数据不包含本样例)
3
【样例输出】 0 .6667

浙公网安备 33010602011771号