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