Problem:
The radical of n, rad(n), is the product of distinct prime factors of n. For example, 504 = 23 [×] 32 [×] 7, so rad(504) = 2 [×] 3 [×] 7 = 42.
If we calculate rad(n) for 1 [≤] n [≤] 10, then sort them on rad(n), and sorting on n if the radical values are equal, we get:
Unsorted
Sorted
n
rad(n)
n
rad(n)
k
1
1
1
1
1
2
2
2
2
2
3
3
4
2
3
4
2
8
2
4
5
5
3
3
5
6
6
9
3
6
7
7
5
5
7
8
2
6
6
8
9
3
7
7
9
10
10
10
10
10
Let E(k) be the kth element in the sorted n column; for example, E(4) = 8 and E(6) = 9.
If rad(n) is sorted for 1 [≤] n [≤] 100000, find E(10000).
If we calculate rad(n) for 1 [≤] n [≤] 10, then sort them on rad(n), and sorting on n if the radical values are equal, we get:
Unsorted
Sorted
n
rad(n)
n
rad(n)
k
1
1
1
1
1
2
2
2
2
2
3
3
4
2
3
4
2
8
2
4
5
5
3
3
5
6
6
9
3
6
7
7
5
5
7
8
2
6
6
8
9
3
7
7
9
10
10
10
10
10
Let E(k) be the kth element in the sorted n column; for example, E(4) = 8 and E(6) = 9.
If rad(n) is sorted for 1 [≤] n [≤] 100000, find E(10000).
Solution:
2783915460
Code:
The solution may include methods that will be found here: Library.java .
public interface EulerSolution{
public String run();
}
/*
* Solution to Project Euler problem 24
* By Nayuki Minase
*
* http://nayuki.eigenstate.org/page/project-euler-solutions
* https://github.com/nayuki/Project-Euler-solutions
*/
public final class p024 implements EulerSolution {
public static void main(String[] args) {
System.out.println(new p024().run());
}
public String run() {
// Initialize
int[] array = new int[10];
for (int i = 0; i < array.length; i++)
array[i] = i;
// Permute
for (int i = 0; i < 999999; i++) {
if (!Library.nextPermutation(array))
throw new AssertionError();
}
// Format output
String ans = "";
for (int i = 0; i < array.length; i++)
ans += array[i];
return ans;
}
}
No comments :
Post a Comment