一、题目描述
小明得到了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