021牛客寒假算法基础集训营2 J 构造 斐波那契数列的运用 判断三角形成立的条件

73 篇文章 2 订阅

题目

在这里插入图片描述在这里插入图片描述

题解思路

首先 三角形成立的条件就是 任意两边之 和 大于第三边 我们取最坏的情况。
最小的两边小于等于第三边。
这样是不是有点斐波那契数列的感觉了。
刚好就是等于前两项之和。
看看行不行。
这样我们需要让第一层循环在不少于进入log2n(40左右)的情况下,斐波那契数列在int范围内有46个左右。
这样我们取前40个符合条件的数放入答案数组前面,后面取1即可。

AC代码
#include <bits/stdc++.h>
//#include <unordered_map>
//priority_queue
#define PII pair<int,int>
#define ll long long  

using namespace std;

const  int  INF =  0x3f3f3f3f;

int dp[999] ; 

int main()
{
    ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    int n ; 
    cin >> n ; 
    dp[1] = 2 ;
    dp[2] = 3 ;
    for (int i = 3 ; i <= 40 ; i++ )
        dp[i] = dp[i-1] + dp[i-2] ; 
    for (int i = 1 ; i <= min(40,n); i++ )
        cout << dp[i] << " " ; 
    if ( n > 40 )
    {
        for (int i = 1 ; i <= n-40 ; i++ )
            cout << "1 ";
    }
    cout << "\n" ; 
    return 0 ;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值