-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathproblem206.py
59 lines (50 loc) · 967 Bytes
/
problem206.py
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
50
51
52
53
54
55
56
57
58
59
#!/usr/bin/env python
# encoding: utf-8
"""
Euler Project Problem 206 - Concealed Square
Created by Ehud Tamir on 2013-04-13.
Copyright (c) 2013 Ehud Tamir. All rights reserved.
"""
import sys
import os
def extract_odd_digits(n):
sgn = 1
m = 0
mul = 1
while n:
if sgn & 1:
m += mul * (n % 10)
mul *= 10
sgn ^= 1
n /= 10
return m
def interleave2nums(n, m):
mul = 1
result = 0
while n or m:
result += mul * (n % 10) + 10 * mul * (m % 10)
mul *= 100
n /= 10
m /= 10
result += mul * (n + m)
return result
import math
def main():
#print interleave2nums(12345, 10000)
for i in xrange(1000000000, 0, -10):
whole = interleave2nums(1234567890, i)
sqrt_w = int(math.sqrt(whole))
if not i % 10000000:
print i
if sqrt_w*sqrt_w == whole:
print sqrt_w
break
if __name__ == '__main__':
main()
'''
target = 1234567890
for i in xrange(1000000000, 10000000000, 10):
if extract_odd_digits(i*i) == target:
print i
break
'''