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