首页 > 试题广场 >

牛牛切木棒

[编程题]牛牛切木棒
  • 热度指数:472 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
有一根长度为a的木棒,现在想将木棒分成一些段(每段木棒长度必须为整数),使得分隔后的木棍中,任意三段都不能构成三角形,求木棒最多被分成几段呢?
示例1

输入

5

输出

3

说明

可以分成1 1 3三段

备注:

头像 Dear㉿You
发表于 2020-11-20 21:00:47
A牛牛切木棒这格式真难调 分析 众所周知,假设 是三角形的三条边,那么一定满足任意两条边之和大于第三条边。假设我们把当前的长度为a的线段分成了p段,从小到大分别为 ,那么如果不能构成三角形,一定满足 ,因为要尽可能多的分段,那么就得尽可能的小。那就可以直接把b数组预处理出来,能分则分,同时记录一个 展开全文
头像 Bernard5
发表于 2020-11-20 21:12:37
本题和https://ac.nowcoder.com/acm/contest/5758/F 一模一样。 显然是斐波那契。不能构成三角形的极限情况必然是。 class Solution { public: /** * * @param a long长整型 木棒的长度 展开全文
头像 Bernard5
发表于 2020-11-20 21:16:37
完全k叉树,每层节点数量是已知的,直接推过去模拟就可以了 class Solution { public: long long tree2(int k, vector<int>& a) { long long ans = 0; int 展开全文
头像 旭日东升BJFU
发表于 2020-11-20 21:39:58
ABC题解A牛牛切木棒任意三个不能构成三角形,一定是:1,1,2,3,5……斐波那契数列,刚好任意三个一定满足a+b<=c class Solution { public: /** * * @param a long长整型 木棒的长度 * @retu 展开全文
头像 XQian
发表于 2020-11-21 09:39:23
题目描述 :牛牛有一根长度为a(3≤a≤1e18)的木棒,现在牛牛想将木棒分成一些段(每段木棒长度必须为整数),使得分隔后的木棍中,任意三段都不能构成三角形,牛牛想知道木棒最多被分成几段呢? 题目解析:首先思考 (1)什么情况下不能构成三角形? 答:存在两边之和小于等于第三边 展开全文
头像 Auspicioushmm
发表于 2023-12-25 18:42:10
package main /** * * @param a long长整型 木棒的长度 * @return int整型 */ func stick( a int64 ) int { // write code here vec := make([]int64, 100) 展开全文

问题信息

难度:
1条回答 1836浏览

热门推荐

通过挑战的用户

查看代码