题目43 给大家演示什么叫 暴力破解!
projecteuler吧
全部回复
仅看楼主
level 1
linyongweibo 楼主
406357289是一个pandigital数,因为它包含了0到9之间每个数字且只包含了一次。此外它还有一个有趣的子串整除性质。令d1表示其第一位数字,d2表示第二位,以此类推。这样我们可以得到:
d2d3d4=406 能被 2 整除
d3d4d5=063 能被 3 整除
d4d5d6=635 能被 5 整除
d5d6d7=357 能被 7 整除
d6d7d8=572 能被 11 整除
d7d8d9=728 能被 13 整除
d8d9d10=289 能被 17 整除求所有具有如上性质的0到9pandigital数。
Java 代码如下:
package linving.oula.demo;
public class Euler_43 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int arg[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int arg0[] = { 0, 1, 2 };
AllSort(arg, 0, arg.length - 1);
}
public static void AllSort(int arg[], int start, int end) {
if (start == end) {
int et = 1000000000;
int result = 0;
for (int i = 0; i <= end; i++) {
// System.out.print(arg[i]);
result = result + et * arg[i];
et = et / 10;
}
if (result > 1000000000) {
if (result % 1000 % 17 == 0
&& result / 10 % 1000 % 13 == 0
&& result / 100 % 1000 % 11 == 0
&& result / 1000 % 1000 % 7 == 0
&& result / 10000 % 1000 % 5 == 0
&& result / 100000 % 1000 % 3 == 0
&& result / 1000000 % 1000 % 2 == 0) {
System.out.println(" my _____result == " + result);
}
}
// System.out.println(result);
} else {
for (int i = start; i <= end; i++) {
int temp = arg[start];
arg[start] = arg[i];
arg[i] = temp;
AllSort(arg, start + 1, end);
temp = arg[start];
arg[start] = arg[i];
arg[i] = temp;
}
}
}
}
result :
my _____result == 1430952867
my _____result == 1406357289
my _____result == 1460357289
my _____result == 1168105595
my _____result == 2050105595
2013年02月25日 08点02分 1
1