首页 > 其他分享 >BestCoder Round #71 (div.2)1001KK's Steel

BestCoder Round #71 (div.2)1001KK's Steel

时间:2023-06-12 14:35:03浏览次数:45  
标签:Steel 10 1001KK right 钢管 BestCoder long leq include


题意:中文题

思路:其实我们不去考虑N,我们只考虑最优切割策略:

          首先肯定是尽量的小即1、2

          既要不相等,又不能构成三角形,即每次为当前数列中最大的两项的和

          那么,构成的数列为1,2,3,5,8,......

          这样我们只要求最接近且小于等于N的Fibonacci数的项数即可。

#include<iostream>
#include<cmath>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
long long n;
void solve(){
    scanf("%I64d",&n);
    if (n==1||n==2) printf("1\n");
    else if (n==3) printf("2\n");
    else {
        n-=3; int ans=2; long long k1=2,k2=1;
        while (1){
            long long k3=k1+k2;
            if (k3>n){
                cout<<ans<<endl; return;
            }
            n-=k3; k2=k1; k1=k3; ans++;
        }
    }
}
int main(){
    int t; scanf("%d",&t);
    for (;t;t--) solve();
    return 0;
}




KK's Steel

 

问题描述



我们可爱的KK遇到了一道数学难题:对于一条长为N\left( 1\leq N\leq {10}^{18}\right)N(1≤N≤1018)米的钢管,最多可以锯成几根小钢管,使得锯成的钢管互不相等且均不能围成三角形。



输入描述



第一行一个数T\left( 1\leq T\leq 10\right)T(1≤T≤10),表示数据组数。
接着T行,每行一个整数N\left( 1\leq N\leq {10}^{18}\right)N(1≤N≤1018),表示钢管的长度。



输出描述



对于每一个数据输出一个整数,表示可以锯成的钢管数。



输入样例



1 6



输出样例



3



Hint



1+2+3=6 1+2=3 他们都不相同且他们不能构成三角形。





标签:Steel,10,1001KK,right,钢管,BestCoder,long,leq,include
From: https://blog.51cto.com/u_16156555/6462547

相关文章

  • THM-Steel Mountain(钢山)
    谁是本月最佳员工?直接访问目标机器,可以看到一个图片,检查得到该图片的名称为BillHarper初始访问使用nmap扫描机器。运行Web服务器的另一个端口是什么?看看另一个......
  • 控制台报错:ReferenceError: FirstSteelMaking is not defined
    原因可能是中午睡觉,乱按键盘输入了代码FirstSteelMaking导致报错,去掉FirstSteelMaking即可:  参考:https://www.cnblogs.com/blog577109142/p/15703172.html ......
  • CAD批量打印MSTEEL
    目录一、安装二、批量打印到文件(通用型)2.1打印流程2.1.1选择2.1.2界面三、批量打印到文件(图框型)3.1图框白名单设置3.2打印流程四、校对图框信息一、安装软件网址:MS......