NC207425. 三角形
描述
输入描述
输入数据的第一行是t,表示数据的组数, 接下来每组数据输入一个a
(t<=1000, 1 <= a < 2^64 - 1)
输出描述
对于每组输入样例,打印木棒最多被分为多少段
示例1
输入:
2 1 3
输出:
1 2
Ruby(2.4.2) 解法, 执行用时: 72ms, 内存消耗: 7280K, 提交时间: 2020-05-31 14:15:52
fib = [0, 1] sum = [0, 1] for n in 2..666 fib[n] = fib[n - 1] + fib[n - 2] sum[n] = sum[n - 1] + fib[n] break if sum[n] >= 2**64 end STDERR.puts sum.size gets.to_i.times do a = gets.to_i for n in 1..666 if sum[n + 1] > a puts n break end end end
C++11(clang++ 3.9) 解法, 执行用时: 5ms, 内存消耗: 488K, 提交时间: 2020-05-31 16:07:20
#include <iostream> using namespace std; int t; unsigned long long a,b,c,i; int main(){ cin>>t; while(t--){ cin>>a; b=0,c=1,i=0; while(c<=a){ a-=c; c+=b; b=c-b; ++i; } cout<<i<<endl; } return 0; }
Python(2.7.3) 解法, 执行用时: 36ms, 内存消耗: 2912K, 提交时间: 2020-05-31 15:23:19
t = int(input()) a = [1,1] for i in range(2,200): a.append(a[i-1]+a[i-2]) while t: n = int(input()); i=0; while n>=a[i]: n-=a[i] i+=1 print("%d" %i) t-=1
pypy3(pypy3.6.1) 解法, 执行用时: 98ms, 内存消耗: 21836K, 提交时间: 2020-05-31 13:43:13
T=int(input()) for _ in range(T): n=int(input()) i=[0,1] ans=0 while n>=i[1]: n-=i[1] i[0]+=i[1] i[0],i[1]=i[1],i[0] ans+=1 print(ans)
Python3(3.5.2) 解法, 执行用时: 84ms, 内存消耗: 3904K, 提交时间: 2020-06-01 19:40:34
t = int(input()) for loop in range(0, t): a = int(input()) b, c, i = 0, 1, 0 while c <= a: a -= c c += b b = c - b i += 1 print(i)