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 | 29 | 30 |
Tags
- 합성곱 신경망
- 전처리
- Autoencoder
- SQL
- 역전파법
- backpropagation
- 비샤몬당
- project euler
- 신경망
- CNN
- c#
- 자전거 여행
- 수달
- deep learning
- 소수
- 냥코 센세
- 베이지안
- 오일러 프로젝트
- Python
- Gram matrix
- 오토인코더
- bayesian
- 히토요시
- 소인수분해
- A Neural Algorithm of Artistic Style
- 역전파
- mnist
- neural network
- 딥러닝
- Convolutional 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