過去ログ

uchinyan
はい,こんにちは。さて,今回の問題は...
一目問題を見て,「地道にやればできるな。」とは思ったものの,暗算ではちょっとキツそうだし,算チャレらしくないので,しばし考えました。
その結果,暗算でも容易な解法を思いつきました。
地道に数える解法を(解法1)に,暗算でできる解法を(解法2)に示します。

(解法1)
要するに,A = 2^10 * 3^10,B = A * A = 2^20 * 3^20 です。
そこで,B の約数は,m, n を 0 〜 20 の整数として 2^m * 3^n と書けます。
このうち,A の約数にならないのは,11 <= m <= 20 又は 11 <= n <= 20 となる場合です。
そして,A より小さいということから,
・11 <= m <= 20 の場合
2^11 * 3^0, ..., 2^11 * 3^9 の 10個。(3^0 = 1 < 2^1 = 2 < 3^1 = 3 なので。)
2^12 * 3^0, ..., 2^12 * 3^8 の 09個。(3^1 = 3 < 2^2 = 4 < 3^2 = 9 なので。)
2^13 * 3^0, ..., 2^13 * 3^8 の 09個。(3^1 = 3 < 2^3 = 8 < 3^2 = 9 なので。)
2^14 * 3^0, ..., 2^14 * 3^7 の 08個。(3^2 = 9 < 2^4 = 16 < 3^3 = 27 なので。)
2^15 * 3^0, ..., 2^15 * 3^6 の 07個。(3^3 = 27 < 2^5 = 32 < 3^4 = 81 なので。)
2^16 * 3^0, ..., 2^16 * 3^6 の 07個。(3^3 = 27 < 2^6 = 64 < 3^4 = 81 なので。)
2^17 * 3^0, ..., 2^17 * 3^5 の 06個。(3^4 = 81 < 2^7 = 128 < 3^5 = 243 なので。)
2^18 * 3^0, ..., 2^18 * 3^4 の 05個。(3^5 = 243 < 2^8 = 256 < 3^6 = 729 なので。)
2^19 * 3^0, ..., 2^19 * 3^4 の 05個。(3^5 = 243 < 2^9 = 512 < 3^6 = 729 なので。)
2^20 * 3^0, ..., 2^20 * 3^3 の 04個。(3^6 = 729 < 2^10 = 1024 < 3^7 = 2187 なので。)
そこで,10 + 9 + 9 + 8 + 7 + 7 + 6 + 5 + 5 + 4 = 70 個 です。
・11 <= n <= 20 の場合
2^0 * 3^11, ..., 2^8 * 3^11 の 9個。(2^1 = 2 < 3^1 = 3 < 2^2 = 4 なので。)
2^0 * 3^12, ..., 2^6 * 3^12 の 7個。(2^3 = 8 < 3^2 = 9 < 2^4 = 16 なので。)
2^0 * 3^13, ..., 2^5 * 3^13 の 6個。(2^4 = 16 < 3^3 = 27 < 2^5 = 32 なので。)
2^0 * 3^14, ..., 2^3 * 3^14 の 4個。(2^6 = 64 < 3^4 = 81 < 2^7 = 128 なので。)
2^0 * 3^15, ..., 2^2 * 3^15 の 3個。(2^7 = 129 < 3^5 = 243 < 2^8 = 256 なので。)
2^0 * 3^16 の 1個。(2^9 = 512 < 3^6 = 729 < 2^10 = 1024 なので。)
3^17 以上を因数に含むものは 0 個。(2^10 = 1024 < 3^7 = 2187 なので。)
そこで,9 + 7 + 6 + 4 + 3 + 1 = 30 個 です。
以上ですべてなので,70 + 30 = 100 個 になります。

(解法2)
B = A * A のとき,B の約数で A 以下のものの個数は ((B の約数の個数) + 1)/2 になります。
これは,次のようにして分かります。
C を A より小さい B の約数とすると,B/C も B の約数で,C < A なので,B/C = (A * A)/C = A * A/C > A となり,
C を A より大きい B の約数とすると,B/C も B の約数で,C > A なので,B/C = (A * A)/C = A * A/C < A となり,
A より小さい B の約数と A より大きい B の約数は1対1に対応しており,個数は同じです。
もちろん A も B の約数なので,B の約数で A 以下のものの個数は,
((B の約数の個数) - 1)/2 + 1 = ((B の約数の個数) + 1)/2
です。
これを使うと,今の場合,A = 2^10 * 3^10,B = A * A = 2^20 * 3^20 なので,
(B の約数の個数) = (20 + 1)(20 + 1) = 21 * 21 = 441
(B の約数で A 以下のものの個数) = (441 + 1)/2 = 442/2 = 221
求めるのは,このうち A の約数でないものなので,
(A の約数の個数) = (10 + 1)(10 + 1) = 11 * 11 = 121
を引いて,221 - 121 = 100 個 になります。
(A 自身を引いていることに注意。そこで,A より小さい B の約数になっています。)
ネコの住む家   4月24日(金) 10:52:25   MAIL:uchi@sco.bekkoame.ne.jp   34374

過去問題一覧へ戻る