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