HDU 5620 KK's Steel

想了一下发现是斐波那契数列.....水题

#include <stdio.h>
#include <algorithm>
#include <string.h>
#include <queue>
#include <stack>
#include <map>
#include <vector>
using namespace std;

const int maxn=1000;
long long n;
long long a[maxn];

void init()
{
    a[1]=1; a[2]=2;
    for(int i=3;i<=90;i++) a[i]=a[i-1]+a[i-2];
}

int main()
{
    init();
    int T;
    scanf("%d",&T);
    while(T--)
    {scanf("%lld",&n);
        int ans;
        long long sum=0;
        for(int i=1;;i++)
        {
            sum=sum+a[i];
            if(sum<=n) ans=i;
            else break;
        }
        printf("%d\n",ans);
    }
    return 0;
}

HDU 5620 KK's Steel

时间: 2024-12-21 12:10:32

HDU 5620 KK's Steel的相关文章

hdu 5620 KK&#39;s Steel(推理)

Problem Description Our lovely KK has a difficult mathematical problem:he has a N(1≤N≤1018) meters steel,he will cut it into steels as many as possible,and he doesn't want any two of them be the same length or any three of them can form a triangle. I

hdu 5623 KK&#39;s Number(dp)

问题描述 我们可爱的KK有一个有趣的数学游戏:这个游戏需要两个人,有N\left(1\leq N\leq 5*{10}^{4} \right)N(1≤N≤5∗10?4??)个数,每次KK都会先拿数.每次可以拿任意多个数,直到NN个数被拿完.每次获得的得分为取的数中的最小值,KK和对手的策略都是尽可能使得自己的得分减去对手的得分更大.在这样的情况下,最终KK的得分减去对手的得分会是多少? 输入描述 第一行一个数T\left( 1\leq T\leq 10\right)T(1≤T≤10),表示数据组

HDU 5624 KK&#39;s Reconstruction(最小生成树)

题目链接:点击打开链接 题意:n个城市, m条可以修建的路, 修每条路有一个费用, 要求修建路将n个城市全部联通,并且最大费用减去最小费用最小. 思路:枚举最小边, 然后重新求一遍最小生成树,复杂度m^2, 出的数据水了, 左边BC水过了.. 细节参见代码: #include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #include<string> #inc

HDU 5624 KK&#39;s Reconstruction

KK's Reconstruction Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 360    Accepted Submission(s): 151 Problem Description Our lovely KK has a difficult Social problem.A big earthquake happened

hdu 5621 KK&#39;s Point(数学,推理题)

题解: 在圆上点三个点时,除圆上三个交点外,圆内没有交点:在圆上点四个点时,除圆上四个交点外,圆内出现了一个交点,因此,在N个点中每四个点便可以在圆内产生一个交点,因此N个点在圆内形成的点的个数为CN4,总的交点数就是CN4+N 1 #pragma comment(linker, "/STACK:1024000000,1024000000") 2 #include<iostream> 3 #include<cstdio> 4 #include<cstrin

BestCoder Round #71 (div.2) (hdu 5620 菲波那切数列变形)

KK's Steel Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 350    Accepted Submission(s): 166 Problem Description Our lovely KK has a difficult mathematical problem:he has a N(1≤N≤1018) meters s

HDU5620 KK&#39;s Steel(C++语言版)

问题链接:HDU5620 刚读到题,有点难解,没有头绪. 看了暗示才明白点,有点像菲波拉契数列,不过每一项求的是数列到该项之和.另外略有不同的是,第1项是1,第2项是2.也许是为了三个钢管围起来不能成为三角形的原因. 既然知道以上这些,那就先打表备查,这是为了节省计算时间,尽管有时候是多余的,但是多数程序都需要打表,那就打表吧. 这个C++版的采用顺序查找,逻辑就要简单一些.参见:HDU5620 KK's Steel(C语言版). 需要说明的一点是,菲波拉契序列的各项值增长是极快的,其和的增长就

HDU5620 KK&#39;s Steel(C语言版)

问题链接:HDU5620 刚读到题,有点难解,没有头绪. 看了暗示才明白点,有点像菲波拉契数列,不过每一项求的是数列到该项之和.另外略有不同的是,第1项是1,第2项是2.也许是为了三个钢管围起来不能成为三角形的原因. 既然知道以上这些,那就先打表备查,这是为了节省计算时间,尽管有时候是多余的,但是多数程序都需要打表,那就打表吧. 查找的时候,可以用顺序查找的,只是略费点时间.这里采用二分查找,逻辑就稍微有点麻烦了,因为这不是找相等的数,是找一个小于或等于的数,所以要注意在二分查找之后加以调整.参

BestCoder Round #71 (div.2)

比赛链接:click here 题解: KK's Steel 问题描述 我们可爱的KK遇到了一道数学难题:对于一条长为N\left( 1\leq N\leq {10}^{18}\right)N(1≤N≤10?18??)米的钢管,最多可以锯成几根小钢管,使得锯成的钢管互不相等且均不能围成三角形. 输入描述 第一行一个数T\left( 1\leq T\leq 10\right)T(1≤T≤10),表示数据组数. 接着T行,每行一个整数N\left( 1\leq N\leq {10}^{18}\rig