Skip to content

Commit 21526e5

Browse files
authored
Merge pull request #259 from myoshi2891/dev-from-macmini
Dev from macmini
2 parents abcb102 + df927ca commit 21526e5

2 files changed

Lines changed: 45 additions & 55 deletions

File tree

Mathematics/Fundamentals/HackerRank/Claude/Easy/Best Divisor/BestDivisor.html

Lines changed: 25 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<title>Best Divisor - √n約数列挙+桁和比較</title>
77

88
<!-- Tailwind CSS -->
9-
<script src="https://cdn.tailwindcss.com" crossorigin="anonymous"></script>
9+
<script src="https://cdn.tailwindcss.com"></script>
1010

1111
<!-- Google Fonts -->
1212
<link rel="preconnect" href="https://fonts.googleapis.com" />
@@ -20,20 +20,14 @@
2020
<link
2121
href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism-tomorrow.min.css"
2222
rel="stylesheet"
23-
integrity="sha512-vswe+cgvic/XBoF1OcM/TeJ2FW0OofqAVdCZiEYkd6dwGXthvkSFWOoGGJgS2CW70VK5dQM5Oh+7ne47s74VTg=="
24-
crossorigin="anonymous"
2523
/>
2624
<link
2725
href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/plugins/line-numbers/prism-line-numbers.min.css"
2826
rel="stylesheet"
29-
integrity="sha512-cbQXwDFK7lj2Fqfkuxbo5iD1dSbLlJGXGpfTDqbggqjHJeyzx88I3rfwjS38WJag/ihH7lzuGlGHpDBymLirZQ=="
30-
crossorigin="anonymous"
3127
/>
3228
<link
3329
href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/plugins/toolbar/prism-toolbar.min.css"
3430
rel="stylesheet"
35-
integrity="sha512-Dqf5696xtofgH089BgZJo2lSWTvev4GFo+gA2o4GullFY65rzQVQLQVlzLvYwTo0Bb2Gpb6IqwxYWtoMonfdhQ=="
36-
crossorigin="anonymous"
3731
/>
3832

3933
<style>
@@ -83,7 +77,7 @@
8377
>
8478
<h1 class="text-[2.5rem] font-bold text-teal-800 mb-2">Best Divisor</h1>
8579
<p class="text-xl text-cyan-700 font-semibold mt-2">
86-
√n約数列挙+桁和比較 による O(√n) 実装
80+
√n約数列挙+桁和比較 による O(√n + d·log n) 実装
8781
</p>
8882
<nav class="flex flex-wrap gap-4 mt-6">
8983
<a
@@ -171,8 +165,8 @@ <h3 class="text-xl font-bold text-teal-800 mt-6 mb-3">戦略</h3>
171165
<h3 class="text-xl font-bold text-teal-800 mt-6 mb-3">主要ポイント</h3>
172166
<ul class="list-disc list-inside space-y-2 text-slate-700 ml-4">
173167
<li>
174-
<strong>時間計算量:</strong> O(√n) - √n までのループ + O(d log d)
175-
の桁和計算(d は約数の個数)
168+
<strong>時間計算量:</strong> O(√n + d·log n) - √n までのループ +
169+
各約数の桁和計算 O(log n)
176170
</li>
177171
<li><strong>空間計算量:</strong> O(d) - 約数リストの保存</li>
178172
<li>
@@ -1085,10 +1079,10 @@ <h3 class="text-lg font-bold text-slate-700 mb-3">📖 フローチャートの
10851079
<td class="border-2 border-slate-200 px-4 py-3">
10861080
<span
10871081
class="px-3 py-1 bg-emerald-100 text-emerald-800 rounded-full font-mono font-bold"
1088-
>O(√n)</span
1082+
>O(√n + d·log n)</span
10891083
>
10901084
<div class="text-sm text-slate-600 mt-1">
1091-
√n までループ + O(d log d) 桁和計算
1085+
√n までループ + 各約数の桁和計算 O(log n)
10921086
</div>
10931087
</td>
10941088
<td class="border-2 border-slate-200 px-4 py-3">
@@ -1214,31 +1208,11 @@ <h3 class="text-xl font-bold text-teal-800 mt-8 mb-3">具体例での計算量</
12141208
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
12151209

12161210
<!-- Prism.js -->
1217-
<script
1218-
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/prism.min.js"
1219-
integrity="sha512-7Z9J3l1+EYfeaPKcGXu3MS/7T+w19WtKQY/n+xzmw4hZhJ9tyYmcUS+4QqAlzhicE5LAfMQSF3iFTK9bQdTxXg=="
1220-
crossorigin="anonymous"
1221-
></script>
1222-
<script
1223-
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-python.min.js"
1224-
integrity="sha512-AKaNmg8COK0zEbjTdMHJAPJ0z6VeNqvRvH4mfRRWDO9CMxRqi0BlcjWXELn7AbfCvLsZ/SBv8kNEGZOJVdWRCQ=="
1225-
crossorigin="anonymous"
1226-
></script>
1227-
<script
1228-
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/plugins/line-numbers/prism-line-numbers.min.js"
1229-
integrity="sha512-BttltKXFyWnGZQcRWj6osIg7lbizJchuAMotOkdLxHxwt/Hyo+cl47bZU0QADg+Qt5DJwni3SbYGXeGMB5cBcw=="
1230-
crossorigin="anonymous"
1231-
></script>
1232-
<script
1233-
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/plugins/toolbar/prism-toolbar.min.js"
1234-
integrity="sha512-st608h+ZqzliahyzEpETxzU0f7z7a9acN6AFvYmHvpFhmcFuKT8a22TT5TpKpjDa3pt3Wv7Z3SdQBCBdDPhyWA=="
1235-
crossorigin="anonymous"
1236-
></script>
1237-
<script
1238-
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/plugins/copy-to-clipboard/prism-copy-to-clipboard.min.js"
1239-
integrity="sha512-/kVH1yrq7ajXhLpvjMxXJqPp6R9w7bqCjW5xhPjGAJTo9JTlx2NjQnM4+Q8dWmjJoMTaYVm7/ZqfqbWLGz+CIQ=="
1240-
crossorigin="anonymous"
1241-
></script>
1211+
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/prism.min.js"></script>
1212+
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-python.min.js"></script>
1213+
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/plugins/line-numbers/prism-line-numbers.min.js"></script>
1214+
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/plugins/toolbar/prism-toolbar.min.js"></script>
1215+
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/plugins/copy-to-clipboard/prism-copy-to-clipboard.min.js"></script>
12421216

12431217
<!-- React Component -->
12441218
<script type="text/babel">
@@ -1967,6 +1941,19 @@ <h3 class="text-xl font-bold text-teal-800 mt-8 mb-3">具体例での計算量</
19671941
viewBox="0 0 600 250"
19681942
style={{ maxWidth: '100%', height: 'auto', marginTop: '20px' }}
19691943
>
1944+
<defs>
1945+
<marker
1946+
id="step-arrow"
1947+
markerWidth="10"
1948+
markerHeight="10"
1949+
refX="9"
1950+
refY="3"
1951+
orient="auto"
1952+
markerUnits="strokeWidth"
1953+
>
1954+
<path d="M0,0 L0,6 L9,3 z" fill="#64748b" />
1955+
</marker>
1956+
</defs>
19701957
{/* Input */}
19711958
<rect
19721959
x="50"
@@ -2131,7 +2118,7 @@ <h3 class="text-xl font-bold text-teal-800 mt-8 mb-3">具体例での計算量</
21312118
return () => {
21322119
if (timerRef.current) clearTimeout(timerRef.current);
21332120
};
2134-
}, [isPlaying, activeStep, stepsData.length]);
2121+
}, [isPlaying, activeStep]);
21352122

21362123
const handlePlay = () => {
21372124
if (isPlaying) return;

Mathematics/Fundamentals/HackerRank/Claude/Easy/Best Divisor/BestDivisor.ipynb

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -112,23 +112,26 @@
112112
" status = \"\" if result == expected else \"\"\n",
113113
" print(f\"{status} n={n}: expected={expected}, got={result}\")\n",
114114
"\n",
115-
"# 詳細デバッグ用\n",
116-
"print(\"\\n=== n=12 の詳細 ===\")\n",
117-
"n = 12\n",
118-
"divisors = []\n",
119-
"i = 1\n",
120-
"while i * i <= n:\n",
121-
" if n % i == 0:\n",
122-
" divisors.append(i)\n",
123-
" if i != n // i:\n",
124-
" divisors.append(n // i)\n",
125-
" i += 1\n",
126-
"\n",
127-
"print(f\"約数: {sorted(divisors)}\")\n",
128-
"for d in sorted(divisors):\n",
129-
" digit_sum = sum(int(digit) for digit in str(d))\n",
130-
" print(f\" {d} → 桁和 = {digit_sum}\")\n",
131-
"print(f\"最良約数: {findBestDivisor(n)}\")"
115+
"# 詳細デバッグ用(n=12 の例)\n",
116+
"def show_divisor_details(n):\n",
117+
" \"\"\"約数とその桁和を表示するヘルパー関数\"\"\"\n",
118+
" divisors = []\n",
119+
" i = 1\n",
120+
" while i * i <= n:\n",
121+
" if n % i == 0:\n",
122+
" divisors.append(i)\n",
123+
" if i != n // i:\n",
124+
" divisors.append(n // i)\n",
125+
" i += 1\n",
126+
" \n",
127+
" print(f\"\\n=== n={n} の詳細 ===\")\n",
128+
" print(f\"約数: {sorted(divisors)}\")\n",
129+
" for d in sorted(divisors):\n",
130+
" digit_sum = sum(int(digit) for digit in str(d))\n",
131+
" print(f\" {d} → 桁和 = {digit_sum}\")\n",
132+
" print(f\"最良約数: {findBestDivisor(n)}\")\n",
133+
"\n",
134+
"show_divisor_details(12)"
132135
]
133136
},
134137
{

0 commit comments

Comments
 (0)