-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathid0040.c
More file actions
49 lines (36 loc) · 716 Bytes
/
id0040.c
File metadata and controls
49 lines (36 loc) · 716 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// Licensed under the MIT License.
// Champernowne's Constant
#include "../lib/euler.h"
static int champernowne_constant(long k)
{
int n = 1;
long long pow = 1;
k--;
for (;;)
{
long long block = pow * 9 * n;
if (k < block)
{
break;
}
k -= block;
pow *= 10;
n++;
}
long long m = pow + k / n;
for (long i = k % n; i < n - 1; i++)
{
m /= 10;
}
return m % 10;
}
int main(void)
{
long product = 1;
clock_t start = clock();
for (long pow = 10; pow < 1000000l; pow *= 10)
{
product *= champernowne_constant(pow);
}
return euler_submit(40, product, start);
}