今年的信息素养大赛关于c++的赛项少了“智能算法应用”赛项(OI赛制),和csp-j/s一样赛制,难度比“算法实践创意”赛项(IOI赛制)大些,可惜今年没有这个赛项,大家在准备“算法实践创意”赛项比赛时除了做这个赛项相关的真题外,也可以做做“智能算法应用”这个赛项的复赛真题,毕竟也是同个主办方出的题~
7月复赛是通向国赛的踏板,小伙伴要记得多多刷刷题,坚持到比赛那天,会有收获的!
下面这道是2024年信息素养大赛智能算法应用的复赛真题——求解连续3相加之和:
www.hixinao.com/tiku/cpp/show-4850.html
这道题需计算由 n
个 3 组成数的总和,因 n
可能很大(最大 10000 ),普通整数无法存储结果,所以采用大整数相加思路,用 vector<int>
模拟大整数运算,步骤如下:
- 大整数相加(
add
函数):保证较长向量为a
,初始化结果向量res
。遍历a
逐位计算,结合进位carry
与b
对应位(若有),更新进位并存储当前位结果,处理剩余进位。 - 构建数并累加(
addN
函数):初始sum
为{3}
(对应数字 3 )。从i = 2
循环到n
,构建长度为i
、元素全为 3 的num
向量(如i = 3
时,num
是{3,3,3}
,对应 333 ),调用add
函数累加更新sum
。 - 结果输出(
print
函数):因大整数在vector
中低位在前、高位在后(如 36 存为{6,3}
),输出时从末尾遍历,依次打印元素还原顺序。 - 主函数(
main
):读入n
,调用addN
计算总和,用print
输出结果,返回0
结束程序 。
核心是借 vector
按位处理大整数,突破普通整数取值限制,适配题目输入范围,实现多 3 组成数的累加求和。
支持在线编程,在线测评,高效方便~
若还想做其他题,可去这寻求帮助,或者给我留言,看到后会回复~
嗨信奥编程在线模拟考试系统(含解析)_信奥在线模拟-优快云博客
www.hixinao.com