hdu 5620 KK's Steel(推理)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu 5620 KK's Steel(推理)相关的知识,希望对你有一定的参考价值。

 

Problem Description
Our lovely KK has a difficult mathematical problem:he has a N(1N1018) 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.
 

 

Input
The first line of the input file contains an integer T(1T10), which indicates the number of test cases.
Each test case contains one line including a integer N(1N1018),indicating the length of the steel.
 

 

Output
For each test case, output one line, an integer represent the maxiumum number of steels he can cut it into.
 

 

Sample Input
1 6
 

 

Sample Output
3
Hint
1+2+3=6 but 1+2=3 They are all different and cannot make a triangle.
 

 

Source
 

 

题意:
给你一个长度为N的钢管,问最多切成几个钢管,使得这些钢管不能围成三角形,并且不能有相同长度 !
思路:
要想使得钢管尽量多,那肯定从1开始吧,有了1,且不能重复,那肯定找2吧,而且三个钢管不能围成,三角形,那直接找a1 + a2 = a3的情况不就恰好不能围成三角形吗。所以很明显,这是一个a1 = 1,a2 = 2的斐波那契数列,找到第一个i  是的前i项和大于N,即可!特殊判断N = 1,N=2即可!他们都是1!
 
技术分享
 1 #pragma comment(linker, "/STACK:1024000000,1024000000")
 2 #include<iostream>
 3 #include<cstdio>
 4 #include<cstring>
 5 #include<cmath>
 6 #include<math.h>
 7 #include<algorithm>
 8 #include<queue>
 9 #include<set>
10 #include<bitset>
11 #include<map>
12 #include<vector>
13 #include<stdlib.h>
14 using namespace std;
15 #define ll long long
16 #define eps 1e-10
17 #define MOD 1000000007
18 #define N 1000000
19 #define inf 1e12
20 ll n;
21 ll f[N];
22 void init(){
23     f[1]=1;
24     f[2]=2;
25     for(ll i=3;i<N;i++){
26         f[i]=f[i-2]+f[i-1];
27     }
28 }
29 int main()
30 {
31     init();
32     int t;
33     scanf("%d",&t);
34     while(t--){
35         scanf("%I64d",&n);
36         ll sum=0;
37         ll i;
38         for(i=1;i<N;i++){
39             sum+=f[i];
40             if(sum>n){
41                 break;
42             }
43         }
44         if(n==1 || n==2){
45             printf("1\n");
46             continue;
47         }
48         printf("%I64d\n",i-1);
49     }
50     return 0;
51 }
View Code

 

 
 
 
 
 
 
 
 
 
 
 
 

以上是关于hdu 5620 KK's Steel(推理)的主要内容,如果未能解决你的问题,请参考以下文章

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

hdu 5623 KK's Number(dp)

HDU 5624 KK's Reconstruction

HDU 5624 KK's Reconstruction

HDU 5624 KK's Reconstruction(最小生成树)

hdu 5621 KK's Point(数学,推理题)