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