整数拆分的可能数
题目:给定一个整数 ,输出这个整数拆分的可能总数。
例如: 时有
共 种分解方法,所以输出应该为 11
。
使用母函数法:
整数分解用母函数可以这样理解,分别用任意个 可以加起来可以表示成 的种数。又因为当使用整数 对 进行分解时,所使用的次数不能多于 次,所以可以写下母函数如下:
在程序中使用 数组表示每一轮乘法后得到系数, 数组表示到现在为止乘法得到的系数总和。最后算出结果后 对应的系数则为可分解的可能数。
代码如下:
#include<cstdio>
const int num=405;
long long s[num];
long long c[num];
int main() {
int n;
while(scanf("%d",&n)!=EOF) {
for(int i=0; i<num; i++) {
c[i]=1;
s[i]=0;
}
for(int i=2; i<=n; i++) {
for(int j=0; j<=n; j+=i) {
for(int k=0; j+k<=n; k++) {
s[k+j]+=c[k];
}
}
for(int x=0; x<=n; x++) {
c[x]=s[x];
s[x]=0;
}
}
printf("%lld\n",c[n]);
}
return 0;
}
posted on 2024-03-30 22:17 White_Fang 阅读(24) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】