[bzoj1263]整数划分
Posted pywbktda
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[bzoj1263]整数划分相关的知识,希望对你有一定的参考价值。
观察样例,令f(n)表示n拆分的答案,猜想$f(n)=3f(n-3)$,当$nle 4$时$f(n)=n$
取3的原因是因为对于给定的$x+y$,当$4<x+y$,显然有$3^{x+y-3}$最大,否则直接取$x+y$即为最大值,也就是给出的递推式
1 #include<bits/stdc++.h> 2 using namespace std; 3 #define P 10 4 int n,ans[10005]; 5 void cheng(int k){ 6 ans[1]*=k; 7 for(int i=2;i<=ans[0];i++){ 8 ans[i]=ans[i]*k+ans[i-1]/P; 9 ans[i-1]%=P; 10 } 11 if (ans[ans[0]]>=P){ 12 ans[ans[0]+1]=ans[ans[0]]/P; 13 ans[ans[0]++]%=P; 14 } 15 } 16 int main(){ 17 scanf("%d",&n); 18 ans[0]=ans[1]=1; 19 while (n>4){ 20 n-=3; 21 cheng(3); 22 } 23 cheng(n); 24 printf("%d ",ans[0]); 25 for(int i=ans[0];i>max(ans[0]-100,0);i--)printf("%d",ans[i]); 26 }
以上是关于[bzoj1263]整数划分的主要内容,如果未能解决你的问题,请参考以下文章