Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- deep learning
- SQL
- Convolutional Neural Network
- Gram matrix
- 히토요시
- 오일러 프로젝트
- backpropagation
- 딥러닝
- 비샤몬당
- bayesian
- A Neural Algorithm of Artistic Style
- 역전파
- 오토인코더
- c#
- 신경망
- 수달
- 합성곱 신경망
- Python
- project euler
- 자전거 여행
- 역전파법
- CNN
- mnist
- Autoencoder
- 베이지안
- 전처리
- neural network
- 소인수분해
- 소수
- 냥코 센세
Archives
- Today
- Total
통계, IT, AI
33. Digit cancelling fractions 본문
1. 개요
문제는 이곳에서 확인할 수 있다. \(49/98\)은 흥미로운 분수인데, 분자와 분모에 포함된 같은 수 9를 지우면 본래의 값과 같기 때문이다. 이와 같은 특성을 보이는 분수를 찾아 곱하고 약분한 후 분모의 값을 구하는 것이 목표이다. 단, 분자와 분모가 각각 두자리 수여야 하며 분수는 1보다 작아야 한다. 그리고 공통된 수는 0이 아니어야 한다. 이러한 특성을 보이는 분수는 4개가 있다고 한다.
2. 구현
십의 자리가 \(a\), 일의 자리가 \(b\)인 어떤 두자리 수를 간략하게 \(ab\)로 나타내자. 분자와 분모에 공통적으로 포함된 같은 수를 \(d\)라고 하면 확인해야 할 분수의 형태는 \(da/db\), \(ad/db\), \(da/bd\), \(ad/bd\)의 4가지 밖에 없다. 또한 문제의 조건에 따라 \(a<b\)이다. 이를 이용하여 다음과 같이 구현한다. 이때 나눗셈의 비교는 오차를 발생시킬 가능성이 매우 크므로 곱으로 비교한다.
# -*- coding: utf-8 -*- for d in range(1,10): for a in range(1,10): for b in range(a+1,10): # CASE 1: da/db if (d*10+a)*b == (d*10+b)*a: print(d*10+a,'/',d*10+b) # CASE 2: ad/db if (a*10+d)*b == (d*10+b)*a: print(a*10+d,'/',d*10+b) # CASE 3: da/bd if (d*10+a)*b == (d+b*10)*a: print(d*10+a,'/',d+b*10) # CASE 4: ad/bd if (d+a*10)*b == (d+b*10)*a: print(d+a*10,'/',d+b*10)
답은 100이다.
'IT > PROJECT_EULER' 카테고리의 다른 글
35. Circular primes (0) | 2017.03.19 |
---|---|
34. Digit factorials (0) | 2017.03.02 |
32. Pandigital products (0) | 2017.02.26 |
31. Coin sums (0) | 2017.02.09 |
30. Digit fifth powers (0) | 2017.01.31 |
Comments