KK's Steel
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 218 Accepted Submission(s): 103
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.
Input
The first line of the input file contains an integer
T(1≤T≤10)
, which indicates the number of test cases.
Each test case contains one line including a integer N(1≤N≤1018) ,indicating the length of the steel.
Each test case contains one line including a integer N(1≤N≤1018) ,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
3Hint1+2+3=6 but 1+2=3 They are all different and cannot make a triangle.
Source
解体思路:在bc上提交时就WA了,在杭电上找到题目重新提交就过了,真不科学.
代码如下:
#include<stdio.h>
int main(){
long long n,a,b,c,sum,ans;
int t;
scanf("%d",&t);
while(t--){
scanf("%lld",&n);
a=1;b=2;sum=a+b;ans=1;
if(n==1||n==2)printf("1\n");
else{
while(sum<=n){
ans++;
c=a+b;
sum+=c;
a=b;
b=c;
}
printf("%lld\n",ans);
}
}
return 0;
}