Permuted multiples: Difference between revisions
Content added Content deleted
(Added XPL0 example.) |
(Added Java solution) |
||
Line 252: | Line 252: | ||
5 x n = 714285 |
5 x n = 714285 |
||
6 x n = 857142 |
6 x n = 857142 |
||
</pre> |
|||
=={{header|Java}}== |
|||
<lang java>import java.util.*; |
|||
public class PermutedMultiples { |
|||
public static void main(String[] args) { |
|||
for (int p = 100; ; p *= 10) { |
|||
int max = (p * 10) / 6; |
|||
for (int n = p + 2; n <= max; n += 3) { |
|||
if (sameDigits(n)) { |
|||
System.out.printf(" n = %d\n", n); |
|||
for (int i = 2; i <= 6; ++i) |
|||
System.out.printf("%dn = %d\n", i, n * i); |
|||
return; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
// Returns true if n, 2n, ..., 6n all have the same base 10 digits. |
|||
private static boolean sameDigits(int n) { |
|||
int[] digits = getDigits(n); |
|||
for (int i = 0, m = n; i < 5; ++i) { |
|||
m += n; |
|||
if (!Arrays.equals(getDigits(m), digits)) |
|||
return false; |
|||
} |
|||
return true; |
|||
} |
|||
private static int[] getDigits(int n) { |
|||
int[] digits = new int[10]; |
|||
do { |
|||
++digits[n % 10]; |
|||
n /= 10; |
|||
} while (n > 0); |
|||
return digits; |
|||
} |
|||
}</lang> |
|||
{{out}} |
|||
<pre> |
|||
n = 142857 |
|||
2n = 285714 |
|||
3n = 428571 |
|||
4n = 571428 |
|||
5n = 714285 |
|||
6n = 857142 |
|||
</pre> |
</pre> |
||