题解 | #整数拆分#
整数拆分
https://www.nowcoder.com/practice/376537f4609a49d296901db5139639ec
#include <iostream> using namespace std; int dp[1000005]={0}; int main() { //每个数唯一二进制表示,可看作多重背包 int n; cin>>n; dp[0]=1; for(int i=1;i<=n;i*=2) { for(int j=i;j<=n;j++)//dp[j]]表示容量为j时有多少种装法 dp[j]=(dp[j]+dp[j-i])%1000000000; } cout<<dp[n]; return 0; } // 64 位输出请用 printf("%lld")