zoukankan      html  css  js  c++  java
  • 洛谷 P1755 斐波那契的拆分

    题目背景

    题目描述

    已知任意一个正整数都可以拆分为若干个斐波纳契数,现在,让你求出n的拆分方法

    输入输出格式

    输入格式:

     

    一个数t,表示有t组数据

    接下来t行,每行一个数n(如题)

     

    输出格式:

     

    t行,每行一个字符串,表示拆分方法(格式:n=a1+a2+a3+..+an),要求从小到大输出

     

    输入输出样例

    输入样例#1: 复制
    input1:1
           1
    input2:1
           10
    
    输出样例#1: 复制
    output1:1=1;
    output2:10=2+8;

    说明

    若有多组数据,以个数最小的为准,若仍有多组,输出右边尽量大的一组

    对于100%的数据 t<=1000 1<=n<=10^9

    思路:模拟,一个数只能使用一次。

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int t,n,pos;
    int f[50],ans[50];
    int main(){
        scanf("%d",&t);
        f[0]=1;f[1]=1;
        for(int i=2;i;i++)
            if(f[i-1]+f[i-2]>1000000000)    break;
            else f[i]=f[i-1]+f[i-2];
        while(t--){
            scanf("%d",&n);
            pos=0;
            printf("%d=",n);
            for(int i=43;i>=0;i--)
                if(f[i]<=n&&n>0){
                    n-=f[i];
                    ans[++pos]=f[i];
                }
            printf("%d",ans[pos]);
            for(int i=pos-1;i>=1;i--)
                printf("+%d",ans[i]);
            cout<<endl;
        }
    }
    细雨斜风作晓寒。淡烟疏柳媚晴滩。入淮清洛渐漫漫。 雪沫乳花浮午盏,蓼茸蒿笋试春盘。人间有味是清欢。
  • 相关阅读:
    es6.8集群部署(ssl认证)+nfs备份(生产)
    spool
    dataguard unname
    zabbix监控mysql主从同步可用性
    企业微信发送消息
    安装ruby
    binlog2sql
    xtrabackup备份异地恢复+binlog日志应用
    5.7.29重新部署主从
    centos7 图形界面启动
  • 原文地址:https://www.cnblogs.com/cangT-Tlan/p/7886972.html
Copyright © 2011-2022 走看看