b
两边之和<=第三边的都不能组成三角形所以是1 1 2 3 5 8......
最小的划分就是这样,然后再开个前缀和存一下,最后和a比一下就出来了。

class Solution {
public:
    /**
     * 
     * @param a long长整型 木棒的长度
     * @return int整型
     */
    #define ll long long
    const long long N=1e2+5;
    int stick(long long a) {
        // write code here
        ll num[N],sum[N],i;
        num[1]=1;num[2]=1;
        sum[1]=1;sum[2]=2;
        for(i=3;num[i]<=a;i++)
        {
            num[i]=num[i-1]+num[i-2];
            sum[i]=sum[i-1]+num[i];
            if(sum[i]>a) return i-1;
        }
       // return a;
    }
};