1
0
Fork 0

Problem 38

This commit is contained in:
Jonathan Chan 2016-12-05 20:35:58 -08:00
parent 990fbe1cca
commit b25b4532a4
3 changed files with 84 additions and 0 deletions

BIN
38 Executable file

Binary file not shown.

57
38.c Normal file
View File

@ -0,0 +1,57 @@
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
bool hasUniqueDigits (int i) {
int a = i % 10;
i /= 10;
int b = i % 10;
i /= 10;
int c = i % 10;
i /= 10;
int d = i % 10;
return a != b && a != c && a != d &&
b != c && b != d &&
c != d;
}
bool isPandigital (int i, int j) {
int a = i % 10;
i /= 10;
int b = i % 10;
i /= 10;
int c = i % 10;
i /= 10;
int d = i % 10;
int e = j % 10;
j /= 10;
int f = j % 10;
j /= 10;
int g = j % 10;
j /= 10;
int h = j % 10;
j /= 10;
int k = j % 10;
return a != 0 && b != 0 && c != 0 && d != 0 && e != 0 && f != 0 && g != 0 && h != 0 && k != 0 &&
a != b && a != c && a != d && a != e && a != f && a != g && a != h && a != k &&
b != c && b != d && b != e && b != f && b != g && b != h && b != k &&
c != d && c != e && c != f && c != g && c != h && c != k &&
d != e && d != f && d != g && d != h && d != k &&
e != f && e != g && e != h && e != k &&
f != g && f != h && f != k &&
g != h && g != k &&
h != k;
}
int main () {
int n = 9182;
for (int i = 9183; i <= 9876; i++) {
if (hasUniqueDigits (i)) {
if (isPandigital (i, 2 * i))
n = i;
}
}
printf ("%d%d\n", n, 2 * n);
}

27
38.txt Normal file
View File

@ -0,0 +1,27 @@
Given a certain tuple (1, 2, ..., n), only a certain range of integers i are allowed to produce a nine-digit concatenation.
(1, 2): 1 * _ _ _ _ = _ _ _ _
2 * _ _ _ _ = _ _ _ _ _
5000 <= i <= 9999
(1, 2, 3): 1 * _ _ _ = _ _ _
2 * _ _ _ = _ _ _
3 * _ _ _ = _ _ _
100 <= i <= 333
(1, 2, 3, 4): 1 * _ _ = _ _
2 * _ _ = _ _
3 * _ _ = _ _
4 * _ _ = _ _ _
25 <= i <= 33
(1, 2, 3, 4, 5): 1 * _ = _
2 * _ = _ _
3 * _ = _ _
4 * _ = _ _
5 * _ = _ _
5 <= i <= 9
(1, 2, 3, 4, 5, 6): 1 * _ = _
2 * _ = _
3 * _ = _
4 * _ = _ _
5 * _ = _ _
6 * _ = _ _
i == 3
In the given example, 9 x (1, 2, 3, 4, 5) = 918273645. Then to produce a larger concatenation, with the given restrictions on i, we can only use i x (1, 2), where 9183 <= i <= 9876. Then only 693 values of i need to be tested.