diff --git a/40 b/40 new file mode 100755 index 0000000..ae16960 Binary files /dev/null and b/40 differ diff --git a/40.c b/40.c new file mode 100644 index 0000000..e5b8bd6 --- /dev/null +++ b/40.c @@ -0,0 +1,26 @@ +#include +#include +#include + +int champernowneDigit (int n) { + int d = 1; + int next = 9; + while (n > next) { + n -= next; + next = 9 * ++d * (int) pow (10, d - 1); + } + + for (int k = 1; k <= d; k++) { + if ((n - k) % d == 0) { + return (((n - k) / (d * (int) pow (10, d - k))) % 10) + (k == 1 ? 1 : 0); + } + } +} + +int main () { + int product = 1; + for (int i = 1; i <= 1000000; i *= 10) { + product *= champernowneDigit (i); + } + printf ("%d\n", product); +}