• Frog and Portal


    Frog and Portal
    HihoCoder - 1873
    https://vjudge.net/problem/HihoCoder-1873/origin
    小青蛙这道题很有趣,巧妙的构造,因为斐波那契里面有1,所以任何正整数都能拆分成斐波那契数的和,问题就在于怎么去拆成和,队友想的是倒着做

    1 1 2 3
    200 199 198 197

    表示的是在第199个位置到终点的方案数,所以只要在前面传送到这个位置就可以了,在前面的时候,隔着一个放一个传送门就能保证唯一,最后堵死

    #include <bits/stdc++.h>
    #define inf 2333333333333333
    #define N 1000010
    #define p(a) putchar(a)
    #define For(i,a,b) for(long long i=a;i<=b;++i)
    //by war
    //2020.9.22
    using namespace std;
    long long m,n,cnt;
    long long f[300],ans[N];
    void in(long long &x){
        long long y=1;char c=getchar();x=0;
        while(c<'0'||c>'9'){if(c=='-')y=-1;c=getchar();}
        while(c<='9'&&c>='0'){ x=(x<<1)+(x<<3)+c-'0';c=getchar();}
        x*=y;
    }
    void o(long long x){
        if(x<0){p('-');x=-x;}
        if(x>9)o(x/10);
        p(x%10+'0');
    }
    
    signed main(){
        f[200]=1;f[199]=1;
        for(long long i=198;i;i--){
            f[i]=f[i+1]+f[i+2];
            if(f[i]>((long long)1<<34)) break;
            n=i;
        }
        // For(i,n,200){
        //     o(f[i]);p('
    ');
        // }
        while(cin>>m){
            if(m==0){
                puts("2");
                puts("1 1");
                puts("2 1");
                continue;
            }
            if(m==1){
                puts("2");
                puts("1 199");
                puts("2 2");
                continue;
            }
            cnt=0;
            For(i,n,200){
                while(f[i]<=m){
                    m-=f[i];
                    ans[++cnt]=i;
                }
            }
            o(cnt+1);p('
    ');
            For(i,1,cnt){
                o(i*2-1);p(' ');o(ans[i]);p('
    ');
            }
            o(cnt*2);p(' ');o(cnt*2);p('
    ');
        }
        return 0;
    }
  • 相关阅读:
    Java集合源码分析(一)
    EffectiveJava——请不要在代码中使用原生态类型
    Dubbo初探
    EffectiveJava——用函数对象表示策略
    EffectiveJava——类层次优于标签类
    notebook1.md
    NoteBook学习(二)-------- Zeppelin简介与安装
    Spark2.0学习(三)--------核心API
    Spark2.0学习(二)--------RDD详解
    Spark2.0学习(一)--------Spark简介
  • 原文地址:https://www.cnblogs.com/war1111/p/13720651.html
Copyright © 2020-2023  润新知