2017京东实习生笔试题之石头分堆

这篇博客介绍了京东实习笔试中的一道题目,内容涉及如何将石头分成堆,使得相邻两堆数量不等,并求最大得分。博主分享了官方解答思路,即理想情况下按k、k+1交替分配,通过判断n除以(k+k+1)的余数来确定最多得分。此外,博主还讨论了舍友提出的另一种方案,并分析了其有效性。
摘要由CSDN通过智能技术生成

一、题目描述
小明得到了n个石头,他想把这些石头分成若干堆,每堆至少有一个石头。他把这些石堆排在一条直线上,他希望任意相邻两堆的石头数都不一样。小明最后的得分为石头数大于等于k的石堆数,问他最多能得多少分。
严格地,小明把n个石头分成了m堆,每堆个数依次为a1,a2…..,am。要求满足:
1、ai≥1(1≤i≤m)
2、ai≠ai+1(1≤i<m)
3、a1+a2+…+am=n
小明想知道中大于等于的数最多能有多少个?

二、输入和输出
输入两个数n, k,输出最大的得分
样例:输入5 1,输出3

三、总结
当时自己在第一道题异或上面的通过率被卡住了,以至于匆匆看了一眼就告诉自己不会,回去改第一道题…渣渣!
事后,看来官方答案发现原来很简单,然而并没有什么卵用
思路大概是:理想情况为 k、k+1、k、k+1、k、k+1、k、k+1…,
因此判断 n % (k+k+1) 是否大于等于k,如果大于k,则可以再分为一个堆,如果小于k,视为无效。
下面贴一个答案吧!

import java.util.Scanner;  
public 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值