P1755 斐波那契的拆分[普及-]

https://www.luogu.com.cn/problem/P1755
涉及知识点:模拟,数学
橙色题
思路:
一.先把斐波那契数列的前45项求出来
二.斐波那契数列求出来了后,进行一个贪心(当前最大可选那个),从后面大的数据开始算(原题:若有多组数据,以个数最小的为准,若仍有多组,输出右边尽量大的一组)
三.贪心过后,把答案存在一个数组里,逆序输出。
注:数组下标最好从0开始,因为如果从1开始,当w=2时,w-2=0,无法输出正确结果。

代码:
 
复制代码
#include<bits/stdc++.h> //懒人专用,但比赛可能会爆ling。 using namespace std; long long a[45]; void fen(int x) { cout<<x<<"="; int q[45],w=0; memset(q,0,sizeof(q));//个人习惯 int k=x; while(k>0) { int l=45-1; while(a[l]>k&&l>=0) l--; //找到第一个能取得斐波那契数 q[w]=a[l]; w++; k-=a[l]; } cout<<q[w-1];//格式输出 for(int i=w-2;i>=0;i--) cout<<"+"<<q[i]; cout<<endl;//洛谷识别不出/n } int main() { a[0]=a[1]=1; for(int i=2;i<45;i++) a[i]=a[i-1]+a[i-2]; //构造数列 int t,n; cin>>t; while(t--) { cin>>n; fen(n);//自动忽略函数名T_T } return 0; }
复制代码

 


__EOF__

本文作者灰の魔女伊蕾娜
本文链接https://www.cnblogs.com/2elaina/p/16449322.html
关于博主:编程小萌新一名,希望从今天开始慢慢提高,一步步走向技术的高峰!
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   -イレイナ  阅读(173)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示