题目传送门
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200601093843544.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1FfMTg0OTgwNTc2Nw==,size_16,color_FFFFFF,t_70)
题解
- 三角形两边之和大于第三边,因此不构成三角形的条件就是存在两边之和不超过另一边。所以按照斐波那契数列的方法切割可以使得切割的段数最大,1,1,2,3,5
- 这样可以使得任意三根木棒不能组成三角形,最后无法切割的部分组成一根长的木棒。
- 注意数据范围比较大,使用
u
n
s
i
g
n
e
d
l
o
n
g
l
o
n
g
unsigned\ long\ long
unsigned long long
AC-Code
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
const ll mod = 1e9 + 7;
int main() {
ll t; cin >> t;
while (t--) {
unsigned long long a;
cin >> a;
ll ans = 0;
ll pre = 0;
ll tmp = 1;
ll k;
while (a >= tmp) {
a -= tmp;
k = pre;
pre = tmp;
tmp += k;
++ans;
}
cout << ans << endl;
}
return 0;
}