蓝桥杯:奇怪的捐赠

哎呀这个题,我就知道肯定不是暴力破解出来的,但还是练习了一把循环。我的天咯,看到答案的时候,我是比较懵逼的因为我上学以来一直觉得进制是个神奇的东西,所以还是暴力破解万岁吧~


package four;
/*
地产大亨Q先生临终的遗愿是:拿出100万元给X社区的居民抽奖,以稍慰藉心中愧疚。
麻烦的是,他有个很奇怪的要求:
1. 100万元必须被正好分成若干份(不能剩余)。
  每份必须是7的若干次方元。
  比如:1元, 7元,49元,343元,...
  
2. 相同金额的份数不能超过5份。

3. 在满足上述要求的情况下,分成的份数越多越好!

请你帮忙计算一下,最多可以分为多少份?*/

public class juanzeng {

	public static void main(String[] args) {
		int a[] = new int[100];
		a[0] = 1;
		int sum = 1000000;
		int a1 = 1;
		int a2 = 7;
		int a3 = 49;
		int a4 = 343;
		int a5 = 343 * 7;
		int a6 = 343 * 49;
		int a7 = 343 * 343;
		int a8 = a7 * 7;
		int a9 = a8 * 7;

		for (int i = 0; i <= 5; i++) {
			for (int j = 0; j <= 5; j++) {
				for (int k = 0; k <= 5; k++) {
					for (int l = 0; l <= 5; l++) {
						for (int m = 0; m <= 5; m++) {
							for (int n = 0; n <= 5; n++) {
								for (int o = 0; o <= 5; o++) {
									for (int p = 0; p <= 5; p++) {
										for (int q = 0; q <= 5; q++) {
											if (i * a1 + j * a2 + k * a3 + l * a4 + m * a5 + n * a6 + o * a7 + p * a8
													+ q * a9 == sum) {
												System.out.println(i + " " + j + " " + k + " " + l + " " + m + " " + n
														+ " " + o + " " + p + " " + q + " ");
												System.out.println(i + j + k + l + m + n + o + p);
											}
										}
									}
								}
							}
						}
					}
				}
			}
		}

		// 直接求一个数字的7进制表示
		// 如果没有函数,可以自己用长除法取余数的方式
		String s = Integer.toString(1000 * 1000, 7);
		int sum1 = 0;
		for (int i = 0; i < s.length(); i++) {
			sum1 += s.charAt(i) - '0';
		}
		System.out.println(s);
		System.out.println("result=" + sum1);
	}

}


猜你喜欢

转载自blog.csdn.net/qq_37387363/article/details/80356285