본문 바로가기

Programming/Algorithm

[Python3] 대칭수찾기2

앞뒤가 같아서 거꾸로 읽어도 같은 수를 '대칭수'라고 한다. 예를들어 12321 이나 111, 43211234같은 것들이다. 맨 앞에 0이 있다고 생각하는 경우는 제외한다. 예) 1210 (X)

7과 0으로만 이루어진 10진수 자연수중 2이상 50미만 연수의 곱으로 이루어진 수를 찾아라.

예) 7*1 = 7

갯수가 많으니 700700007007까지만 찾자

2부터 쭉해보는건 시간도 오래걸리고 찾기도 힘들다. 차라리 7과 0의 대칭수를 찾고 50미만의 자연수로 나눠지나 확인해보자. 알아둬야 할점은 일의 자릿수가 0이 아니다. 또, 짝수와 5의 배수는 절대 끝자리가 7이 될 수 없다. 따라서 우린 5를 제외한 홀수만 생각하면 된다.

def reverse(x):    #파이썬에 reverse()메서드가 있지만 배열만 취급하고 메서드이기 때문에 조금 길어진다. 따라서 함수로 만들었다.
x = list(str(x))
x.reverse()
a = "".join(x)
return a

result = []
for i in range(1, 49*49+1):
temp = bin(i)[2:]
if(str(temp) == reverse(temp)):
for j in range(3, 50, 2):
if(j % 5 != 2):
temp = int(temp)
if(temp * 7 % j == 0):
tempp = [j, int(temp * 7 / j), temp * 7]
result.append(tempp)
for k in result:
print(k[0], "*", k[1], "=", k[2])

결과

11 * 7 = 77

3 * 259 = 777

21 * 37 = 777

11 * 637 = 7007

13 * 539 = 7007

49 * 143 = 7007

11 * 707 = 7777

3 * 23569 = 70707

13 * 5439 = 70707

21 * 3367 = 70707

39 * 1813 = 70707

49 * 1443 = 70707

11 * 7007 = 77077

13 * 5929 = 77077

49 * 1573 = 77077

41 * 1897 = 77777

11 * 63637 = 700007

11 * 64337 = 707707

13 * 54439 = 707707

49 * 14443 = 707707

11 * 70007 = 770077

3 * 259259 = 777777

11 * 70707 = 777777

13 * 59829 = 777777

21 * 37037 = 777777

33 * 23569 = 777777

39 * 19943 = 777777

49 * 15873 = 777777

3 * 2335669 = 7007007

21 * 333667 = 7007007

13 * 544439 = 7077707

41 * 172627 = 7077707

49 * 144443 = 7077707

11 * 700007 = 7700077

3 * 2590259 = 7770777

21 * 370037 = 7770777

11 * 6363637 = 70000007

11 * 6370637 = 70077007

13 * 5390539 = 70077007

49 * 1430143 = 70077007

11 * 6427337 = 70700707

3 * 23592569 = 70777707

11 * 6434337 = 70777707

13 * 5444439 = 70777707

21 * 3370367 = 70777707

33 * 2144779 = 70777707

39 * 1814813 = 70777707

49 * 1444443 = 70777707

11 * 7000007 = 77000077

3 * 25692359 = 77077077

11 * 7007007 = 77077077

21 * 3670337 = 77077077

33 * 2335669 = 77077077

3 * 25900259 = 77700777

11 * 7063707 = 77700777

21 * 3700037 = 77700777

33 * 2354569 = 77700777

11 * 7070707 = 77777777

3 * 233356669 = 700070007

13 * 53851539 = 700070007

21 * 33336667 = 700070007

39 * 17950513 = 700070007

49 * 14287143 = 700070007

11 * 63700637 = 700707007

13 * 53900539 = 700707007

49 * 14300143 = 700707007

41 * 17245627 = 707070707

3 * 235902569 = 707707707

21 * 33700367 = 707707707

13 * 54444439 = 707777707

49 * 14444443 = 707777707

11 * 70000007 = 770000077

41 * 18782197 = 770070077

3 * 256902359 = 770707077

21 * 36700337 = 770707077

3 * 259000259 = 777000777

21 * 37000037 = 777000777

11 * 70700707 = 777707777

3 * 259259259 = 777777777

9 * 86419753 = 777777777

21 * 37037037 = 777777777

11 * 636363637 = 7000000007

13 * 538461539 = 7000000007

19 * 368421053 = 7000000007

49 * 142857143 = 7000000007

11 * 636433637 = 7000770007

11 * 637000637 = 7007007007

13 * 539000539 = 7007007007

49 * 143000143 = 7007007007

3 * 2335925669 = 7007777007

11 * 637070637 = 7007777007

21 * 333703667 = 7007777007

29 * 241647483 = 7007777007

33 * 212356879 = 7007777007

11 * 642727337 = 7070000707

3 * 2356923569 = 7070770707

11 * 642797337 = 7070770707

13 * 543905439 = 7070770707

21 * 336703367 = 7070770707

33 * 214265779 = 7070770707

39 * 181301813 = 7070770707

49 * 144301443 = 7070770707

3 * 2359002569 = 7077007707

11 * 643364337 = 7077007707

21 * 337000367 = 7077007707

33 * 214454779 = 7077007707

11 * 643434337 = 7077777707

13 * 544444439 = 7077777707

49 * 144444443 = 7077777707

11 * 700000007 = 7700000077

3 * 2566923359 = 7700770077

11 * 700070007 = 7700770077

13 * 592366929 = 7700770077

21 * 366703337 = 7700770077

33 * 233356669 = 7700770077

39 * 197455643 = 7700770077

49 * 157158573 = 7700770077

3 * 2569002359 = 7707007077

11 * 700637007 = 7707007077

21 * 367000337 = 7707007077

33 * 233545669 = 7707007077

11 * 700707007 = 7707777077

13 * 592905929 = 7707777077

49 * 157301573 = 7707777077

3 * 2590000259 = 7770000777

11 * 706363707 = 7770000777

21 * 370000037 = 7770000777

33 * 235454569 = 7770000777

11 * 706433707 = 7770770777

23 * 337859599 = 7770770777

29 * 267957613 = 7770770777

11 * 707000707 = 7777007777

11 * 707070707 = 7777777777

41 * 189701897 = 7777777777

3 * 23333566669 = 70000700007

21 * 3333366667 = 70000700007

31 * 2258087097 = 70000700007

11 * 6370000637 = 70070007007

13 * 5390000539 = 70070007007

49 * 1430000143 = 70070007007

3 * 23359025669 = 70077077007

21 * 3337003667 = 70077077007

19 * 3688304053 = 70077777007

13 * 5438515439 = 70700700707

23 * 3073943509 = 70700700707

49 * 1442871443 = 70700700707

3 * 23569023569 = 70707070707

13 * 5439005439 = 70707070707

21 * 3367003367 = 70707070707

39 * 1813001813 = 70707070707

49 * 1443001443 = 70707070707

3 * 23590002569 = 70770007707

21 * 3370000367 = 70770007707

19 * 3725109353 = 70777077707

3 * 23592592569 = 70777777707

9 * 7864197523 = 70777777707

13 * 5444444439 = 70777777707

21 * 3370370367 = 70777777707

39 * 1814814813 = 70777777707

49 * 1444444443 = 70777777707

11 * 7000000007 = 77000000077

13 * 5923076929 = 77000000077

19 * 4052631583 = 77000000077

49 * 1571428573 = 77000000077

3 * 25669023359 = 77007070077

21 * 3667003337 = 77007070077

3 * 25690002359 = 77070007077

21 * 3670000337 = 77070007077

13 * 5928515929 = 77070707077

49 * 1572871573 = 77070707077

11 * 7007007007 = 77077077077

13 * 5929005929 = 77077077077

49 * 1573001573 = 77077077077

3 * 25692592359 = 77077777077

9 * 8564197453 = 77077777077

21 * 3670370337 = 77077777077

23 * 3351207699 = 77077777077

3 * 25900000259 = 77700000777

21 * 3700000037 = 77700000777

3 * 25902590259 = 77707770777

9 * 8634196753 = 77707770777

13 * 5977520829 = 77707770777

21 * 3700370037 = 77707770777

39 * 1992506943 = 77707770777

49 * 1585872873 = 77707770777

11 * 7070000707 = 77770007777

3 * 25923569259 = 77770707777

9 * 8641189753 = 77770707777

21 * 3703367037 = 77770707777

41 * 1897001897 = 77777077777

11 * 63636363637 = 700000000007

23 * 30434782609 = 700000000007

11 * 63637063637 = 700007700007

11 * 63642733637 = 700070070007

3 * 233359256669 = 700077770007

11 * 63643433637 = 700077770007

21 * 33337036667 = 700077770007

33 * 21214477879 = 700077770007

11 * 63700000637 = 700700007007

13 * 53900000539 = 700700007007

49 * 14300000143 = 700700007007


Process finished with exit code 0



'Programming > Algorithm' 카테고리의 다른 글

[Python3] 소수리스트2  (1) 2017.03.01
[Python3] 소수리스트  (3) 2017.02.28
[Python3] 맞춤법 검사기  (1) 2017.02.13
[Python3] 웹 페이지 파싱  (3) 2017.02.08
[Python3] 3 6 9 게임  (0) 2017.01.22