您的位置:首页 > 其它

HDU 5620 KK's Steel <贪心思维>

2016-07-24 16:17 344 查看
KK's Steel

Time Limit: 1000MS Memory Limit: 65536KB 64bit IO Format: %I64d & %I64u
Submit Status

Description

Our lovely KK has a difficult mathematical problem:he has a N\left( 1\leq N\leq {10}^{18}\right) 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\left( 1\leq T\leq 10\right),
which indicates the number of test cases. 

Each test case contains one line including a integer N\left( 1\leq N\leq {10}^{18}\right),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

BestCoder Round #71 (div.2)

每次减一个尽可能小的木棒--

代码:

#include<cstdio>
#define LL long long
void solve()
{
LL n;scanf("%lld",&n);
if (n<3)
{
printf("1\n");
return ;
}
LL shu[150];n-=3;
shu[0]=1;shu[1]=2;
for (int i=2;i;i++)
{
shu[i]=shu[i-1]+shu[i-2];
if (n<shu[i])
{
printf("%d\n",i);
return ;
}
n-=shu[i];
}
}
int main()
{
int t;scanf("%d",&t);
while (t--)
solve();
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: