上一篇题解貌似没有 code?那窝来补一篇。
description:
给出一个整数 ,求将 分解为若干个 的次幂的和的方案数。‘’
solution:
这道题可以使用递推。
我们由小向大推,分情况讨论:
-
为奇数:那么只能是 这个数加上一个 得来的。
-
为偶数:可能和上述过程一样,也可能是 再 得来。
所以递推的柿子就显而易见了。
code:
#include<cstdio>
using namespace std;
long long f[1000005];//日常懒得动脑/kk
int main()
{
int n;
scanf("%d",&n);
f[1]=1;//初始化
for(int i=2;i<=n;i++)
{
if(i%2==1)
{
f[i]=f[i-1]%1000000000;
}
else
{
f[i]=(f[i-1]+f[i/2])%1000000000;
}
}
printf("%lld\n",f[n]%1000000000);//这个模数真是。。。别漏看,也别想当然成10^9+7
return 0;
}