NOIP2026 普及组复赛试题及详细题解.docxVIP

  • 1
  • 0
  • 约6.31千字
  • 约 12页
  • 2026-10-13 发布于河北
  • 举报

NOIP2026普及组复赛试题及详细题解

NOIP2026全国青少年信息学奥林匹克联赛普及组复赛

考试时间:10月18日14:30-18:00

试题总分:400分

题目数量:4道大题

编译环境:C++GCC9.3.0

第一题整数拆分(split)

【题目描述】

给定一个正整数n,你需要将其拆分为若干个互不相同的正整数之和,使得拆分出的所有数的乘积最大。

请输出这个最大乘积。

【输入格式】

一行一个正整数n。

【输出格式】

一行一个整数,表示最大乘积。

【输入样例1】

8

【输出样例1】

15

【样例解释1】

8拆分为3+5,乘积3×5=15,为所有合法拆分中的最大值。

【输入样例2】

10

【输出样例2】

30

【数据范围】

对于30%的数据:1≤n≤10

对于60%的数据:1≤n≤100

对于100%的数据:1≤n≤1000

【第一题详细题解】

解题思路

本题核心是找整数拆分的最优策略,通过数学规律可直接推导最优方案,无需暴力枚举:

1.想要互不相同的数乘积最大,优先选择连续的自然数(从2开始)累加,相同和的情况下,数越接近,乘积越大;

2.先累加2,3,4...直到总和接近n,记录剩余差值rest;

3.若剩余值为0,直接累乘所有数即可;

4.若剩余值不为0,从最大的数开始依次+1分配剩余值,保证所有数不重复;

5.特殊情

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档