Problem 63 » 履歴 » バージョン 2
Noppi, 2024/01/28 11:09
| 1 | 1 | Noppi | [ホーム](https://redmine.noppi.jp) - [[Wiki|Project Euler]] |
|---|---|---|---|
| 2 | # [[Problem 63]] |
||
| 3 | |||
| 4 | ## Powerful Digit Counts |
||
| 5 | The $5$-digit number, $16807=7^5$, is also a fifth power. Similarly, the $9$-digit number, $134217728=8^9$, is a ninth power. |
||
| 6 | |||
| 7 | How many $n$-digit positive integers exist which are also an $n$th power? |
||
| 8 | |||
| 9 | ## べき乗の桁の個数 |
||
| 10 | $5$桁の数 $16807=7^5$は自然数を5乗した数である. 同様に$9$桁の数 $134217728=8^9$も自然数を9乗した数である. |
||
| 11 | |||
| 12 | 自然数を $n$ 乗して得られる $n$ 桁の正整数は何個あるか? |
||
| 13 | |||
| 14 | ```scheme |
||
| 15 | 2 | Noppi | (import (scheme base) |
| 16 | (gauche base) |
||
| 17 | (scheme inexact)) |
||
| 18 | |||
| 19 | (define (digit-num num) |
||
| 20 | (assume (exact-integer? num)) |
||
| 21 | (assume (not (negative? num))) |
||
| 22 | (if (zero? num) |
||
| 23 | 1 |
||
| 24 | (+ (floor->exact (log num 10)) |
||
| 25 | 1))) |
||
| 26 | |||
| 27 | (define (powerful-digit-list) |
||
| 28 | (let loop1 ([base 1] |
||
| 29 | [rest (iota 9 1)] |
||
| 30 | [result '()]) |
||
| 31 | (if (null? rest) |
||
| 32 | (reverse result) |
||
| 33 | (let loop2 ([index (car rest)] |
||
| 34 | [rest rest] |
||
| 35 | [result result]) |
||
| 36 | (cond |
||
| 37 | [(< 9 index) |
||
| 38 | (loop1 (+ base 1) |
||
| 39 | rest |
||
| 40 | result)] |
||
| 41 | [(< (digit-num (expt index base)) base) |
||
| 42 | (loop2 (+ index 1) |
||
| 43 | (delete index rest) |
||
| 44 | result)] |
||
| 45 | [(= (digit-num (expt index base)) base) |
||
| 46 | (loop2 (+ index 1) |
||
| 47 | rest |
||
| 48 | (cons `(,index . ,base) result))] |
||
| 49 | [else |
||
| 50 | (loop1 (+ base 1) rest result)]))))) |
||
| 51 | |||
| 52 | (define answer-63 |
||
| 53 | (length (powerful-digit-list))) |
||
| 54 | |||
| 55 | (format #t "63: ~d~%" answer-63) |
||
| 56 | 1 | Noppi | ``` |