本帖最后由 黄小贝 于 2012-10-23 02:59 编辑
饭后一道题,天天好心情~
题目:n个运动员比完赛后口渴了,到附近小卖部买水,正好小卖部搞促销活动,凭三个空瓶既可换一瓶水,请问他们最少需要多少个空瓶,才能使每人都有一瓶水?
这真是我这一周以来遇到的最可爱的题目~~
当我以为我似乎做出来的时候,我手贱的遍历了 n 从1 到 100 的所有结果~~
然后我似乎发现了些什么~
还记得那些年做数学题的日子吗?- package day7;
- /**
- * n个运动员比完赛后口渴了,到附近小卖部买水,正好小卖部搞促销活动
- * 凭三个空瓶既可换一瓶水,请问他们最少需要多少个空瓶,才能使每人都有一瓶水?
- *
- * @author yellowbaby
- *
- */
- public class Test {
- public static void main(String[] args) {
-
- for (int n = 1; n <= 100; n++) {
- System.out.print("n 的值为 : " + n + " 需要的瓶子为: ");
- System.out.println(" " + getEmptyBottleNum(n));
-
- //System.out.println(2 * n + 1);
- }
-
- }
-
- /**
- * 计算 n 个人需要多少个空瓶子
- */
- private static int getEmptyBottleNum(int n) {
-
- for (int i = n; i <= 3 * n; i++) {
- if(howMuchBottle(i) == n){
- return i;
- }
- }
- return 0;
- }
-
-
- /**
- * 计算 i 个瓶子可以满足多少人
- */
- private static int howMuchBottle(int i) {
-
- int sum = 0;
-
- do {
- sum += i / 3;
- i = (i / 3) + (i % 3);
- } while (i >= 3 );
-
- return sum;
- }
- }
复制代码 |