#3978. [GESP2409 六级] ⼩杨和整数拆分
[GESP2409 六级] ⼩杨和整数拆分
⼩杨和整数拆分
题目描述
⼩杨有⼀个正整数 ,⼩杨想将它拆分成若⼲完全平⽅数的和,同时⼩杨希望拆分的数量越少越好。 ⼩杨请你编写程序计算出总和为 的完全平⽅数的最少数量。
输入格式
第⼀⾏包含⼀个正整数 ,含义如题⾯所⽰。
输出格式
输出⼀个整数,代表总和为 的完全平⽅数的最少数量。 3.1.4 样例1 1 18 1 2 ,其中最少需要 个完全平⽅数。 子任务编号 数据点占比 1 20% 2 40% 3 40% 对于全部数据,保证有 。 3.1.5 参考程序 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int N = 1e5+10; 4 int n; 5 int dp[N]; 6 int main(){ 7 cin>>n; 8 for(int i=1;i<=n;i++){ 9 dp[i]=i; 10 for(int j=1;j<=sqrt(i);j++){ 11 dp[i] =min(dp[i-j*j]+1,dp[i]); 12 } 13 } 14 cout<<dp[n]<<"\n"; 15 }
样例输入 #1
1 18
1 2
,其中最少需要 个完全平⽅数。
子任务编号 数据点占比
1 20%
2 40%
3 40%
样例输出 #1
数据范围
见题目描述
知识点与难度
本题涉及的知识点从属于 GESP 6级,难度等级:⭐⭐⭐⭐⭐ 。
测试点分布
| Subtask | 分值 | 测试点编号 | 说明 |
|---|---|---|---|
| 0 | 10 | 1~2 | 样例 |
| 1 | 20 | 3~8 | 小规模 / 特殊性质 |
| 2 | 15 | 9~11 | Hack |
| 3 | 30 | 12~20 | 中大规模 |
| 4 | 25 | 21~25 | 随机回归 |
生测试数据后,按实际 subtask 分组改写上表。