• 用互不相同的fib数列的数分解任意整数。


    用互不相同的fib数列的数分解任意整数。

    #include<bits/stdc++.h>
    using namespace std;
    #define int long long
    #define rep(i,a,b) for(int i=(a);i<=(b);++i)
    #define dwn(i,a,b) for(int i=(a);i>=(b);--i)
    template <typename T>inline void rd(T &x){
        x=0;char c=getchar();int f=0;
        while(!isdigit(c)){f|=c=='-';c=getchar();}
        while(isdigit(c)){x=(x<<1)+(x<<3)+(c^48);c=getchar();}
        x=f?-x:x;
    }
    #define mem(a,b) memset(a,b,sizeof(a))
    #define ee(i,u) for(int i=head[u];i;i=e[i].next)
    
    int n;
    bool first=0;
    
    inline int find(int x){
        int a=1,b=1,c;
        do{
            c=a+b;
            a=b,b=c;
        }while(b<x);
        if(b==x)return b;
        else return a;
    }
    
    inline void print(int x){
        int a=find(x);//小于等于x的最大的fib数
        if(first){
            printf("%d",a);
            first=0;
        }
        else 
            printf("+%d",a);
        if(a<x)
            print(x-a);
    }
    
    #undef int 
    int main(){
    #define int long long
        rd(n);
    //    n=36;
        first=1;
        cout<<n<<"=";
        print(n);
        return 0;
    }
    

    /*

    36

    */

    /*

    36=34+2

    */

  • 相关阅读:
    RadAsm使用
    如何从外网访问内网
    装SQL server 2008问题解决
    820
    大三学生经验之谈
    ROM与RAM知识
    java mybatis学习一
    java Sprint boot 学习之一
    java读取配置到Hash表里
    数组乱序算法
  • 原文地址:https://www.cnblogs.com/sjsjsj-minus-Si/p/11671576.html
Copyright © 2020-2023  润新知