猴子分桃

package snippet;

import java.util.Scanner;

/**
 * 海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只
 * 猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了
 * 一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的, 问海滩上原来最少有多少个桃子?
 * 
 * 
 * 
 * @author Administrator
 *
 */
public class Snippet {
	public static int m = 0;// 桃子总数

	public static void main(String args[]) {
		Scanner scanner = new Scanner(System.in);
		int n = scanner.nextInt();
		if (n == 1) {
			System.out.println(2);// 特例
		} else {
			houZhi(0, 1, n);
		}
	}

	public static int houZhi(int all, int k, int n) {// k表示分桃次数

		if ((all - 1) % n == 0 && k <= n) {
			if (k == n) {
				System.out.println(m);
				return 0;
			}
			k += 1;
			return houZhi((all - 1) / n * (n - 1), k, n);
		} else {
			m += 1;
			return houZhi(m, 1, n);
		}

	}

}




你可能感兴趣的:(猴子分桃)