HDU 5914 Triangleフィボナッチ数列&&バイナリカットストライプ

3192 ワード

HDU5914
タイトルリンク
标题:1からnまでの長さの木の棒がn本あって、最低でも何本持っていって、残った木の棒がどうしても三角形にならないようにする.
标题:フィボナッチ数列、a+b=cはちょうど三角形を構成することができなくて、暴力は良くて、押してもいいです.
#include 
#include 
#include 
using namespace std;
int main()
{
    int t,n,cas=1;
    scanf("%d",&t);
    int a[25];
    memset(a,0,sizeof(a));
    a[1]=1;
    a[2]=1;
    a[3]=1;
    a[5]=1;
    a[8]=1;
    a[13]=1;
    while(t--)
    {
        scanf("%d",&n);
        int ans=0;
        for(int i=1;i<=n;i++)
        if(!a[i]) ans++;
        printf("Case #%d: %d
",cas++,ans); } return 0; }

 
金棒を切る
1本の金条の長さは31センチメートルで、もしそれを数段に切って、その中の1段あるいは何段が1から31の中のいかなる整数の金条に成長することができるならば、何回切りますか?
第一反応はフィボナッチ数列1 2 3 5 8 12で、5刀を切ったが、結果は間違っていた.この問題はバイナリでやるべきだ.123は3を必要としないので、12は3を構成することができるので、124はもっと良い選択です.
この2つの問題は似ているようですが、これは2つの問題なので、よく区別しなければなりません.
1 2 4 8 16、ちょうど31、4刀を切って、答えは4です.
転載先:https://www.cnblogs.com/Ritchie/p/6426624.html