AtCoder と試験で確かめる

回 8-8 分野 8 考え方

AtCoder は、競技プログラミングのコンテストを開くサイトで、初心者から中級者向けの ABC、初級者から上級者向けの ARC、世界の上位者向けの AGC、最適化の AHC があります。ABC の前半の問題では、ループの回数の Σ、余りと周期、場合の数、包除原理のような、この数学の回で扱った考えがそのまま効きます。この回では 8 分野から 1 問ずつの総合問題を、Python で解いて確かめます。

8 つの分野の考えを 1 問ずつ使う総合問題を解き、コンテストと試験のどこで効くかを確かめます。

数学の回で学んだことは、本番の問題で使えるか

使えます。ただし、問題文は「余事象を使え」とは書いてくれません。どの道具を使うかを、自分で見抜く必要があります。

この回は、数学の 8 分野の総まとめです。分野ごとに 1 問ずつ、ほかの回には無い新しい総合問題を用意しました。どれも、コンテストや試験で出る形に寄せていますが、実際の過去問ではありません。先に自分で考え、Python で答えを確かめてください。

前半で、総合問題を試す場として、AtCoder と 2 つの試験を紹介します。

AtCoder そのものを使いたい人は、次の 3 つから入ると早いです。

  • AtCoder の公式サイト。登録、コンテストの案内、順位表、レーティングを見る所
  • AtCoder Algorithm Lectures。公式の情報サイトにある、データ構造、整数論、数え上げなどの分野別の講義の一覧
  • AtCoder Problems。有志が作った、過去の問題の一覧と、自分が解いた問題の記録を見られるサイト

力を試せる場

AtCoder とは

AtCoder は、競技プログラミングのコンテストを開く日本のサイトです。問題を読み、決まった時間の中でプログラムを書いて出すと、自動で正しいかと時間内に終わるかを判定されます。全部のテストに正しく、時間内に答えると AC (Accepted) と表示されます。公式のサイトでは、コンテストの種類が次のように紹介されています。

種類正式な名前公式の紹介
ABCAtCoder Beginner Contest初心者~中級者向け
ARCAtCoder Regular Contest初級者〜上級者向け
AGCAtCoder Grand Contest世界ランカー向け
AHCAtCoder Heuristic Contest最適化

ABC から ARC、AGC までは、正しい答えを時間内に出す問題です。AHC は、ちょうどの正解が無い問題で、できるだけよい答えを探して点数を競います。

参加すると、コンテストごとの成績がレーティングに反映されます。始めるなら、公式サイトで登録して ABC に参加し、最初の数問を解くのが入口です。公式の情報サイトには、分野別の講義 (整数論、数え上げ、線形代数など) の一覧もあります。

生成 AI の使い方の決まりは、コンテストごとに定められています。たとえば公式サイトの 2026 年 10 月のお知らせでは、長期の AHC を、生成 AI を使わない Human Only 部門と、生成 AI を使える With AI 部門の 2 つに分けて開くとしています。参加の前に、そのコンテストのルールを読みます。

統計検定 2 級

統計検定 2 級は、大学の基礎課程で学ぶ統計を確かめる試験です。公式の頁では、CBT 方式 (会場のパソコンで受ける)、4〜5 肢の選択問題が 35 問程度、試験時間 90 分、100 点満点で 60 点以上が合格の水準とされています。出題範囲には、確率、確率分布とその平均と分散、推定、検定が入っています。分野 4 と分野 5 がそのまま効きます。

基本情報技術者試験の科目 A

基本情報技術者試験は、情報処理推進機構 (IPA) が行う国家試験です。科目 A は四肢択一の 60 問で、試験時間は 90 分です。科目 B は 20 問で 100 分です。IPA のシラバスでは、基礎理論の中に、離散数学 (2 進数などの基数の変換、数値の表現) と応用数学 (確率と統計の計算) が入っています。

8 分野と、効く場面

分野主な道具よく効く場
1 数と式Σ、漸化式、集合ループの回数、条件の整理
2 関数と対数log、指数の伸び間に合うかの見積もり
3 整数と余り最大公約数、mod、周期ABC の前半、曜日や周期
4 場合の数と確率組み合わせ、期待値数え上げ、統計検定
5 統計平均、分散、標準偏差統計検定、データの要約
6 ベクトルと行列内積、行列の積機械学習、埋め込みの近さ
7 微分と積分勾配、細かく分けて足す機械学習の学習
8 考え方規則性、偶奇、余事象、包除原理、小問題、対称性、上界と下界どの場でも最初の 1 手

8 問の総合問題

問題文を読んだら、すぐにコードを開かず、どの分野の道具を使うかを先に言ってみてください。

問 1 足し算の足し算 (分野 1)

次のコードは、n = 100 のとき total がいくつになりますか。

total = 0
for i in range(1, n + 1):
    for j in range(1, i + 1):
        total += j

内側のループは 1 から i までの和 i × (i + 1) ÷ 2 を足しています。それを i = 1 から n まで足すので、Σ で書くと Σ i(i + 1)/2 です。計算すると n(n + 1)(n + 2)/6 になり、n = 100 なら 100 × 101 × 102 ÷ 6 = 171700 です。

問 2 3 で割り続ける回数 (分野 2)

10^18 を、3 で割って切り捨てる操作を繰り返します。何回で 0 になりますか。

3 で割って切り捨てるのは、3 進数で右に 1 桁ずらすことです。だから回数は、3 進数で書いたときの桁数です。3^37 ≤ 10^18 < 3^38 なので、38 回です。log3 (10^18) = 18 ÷ log10 3 ≈ 37.7 の切り捨てに 1 を足した数とも言えます。

動かす 問 1 と問 2

python実行可能
出力

▶ 実行ボタンを押すと結果がここに表示されます

実行すると、次の通りに出ます

問1 171700 171700
問2 38
 3^37 450283905890997363
 3^38 1350851717672992089

問 1 は数えた和と式の値がどちらも 171700、問 2 は 38 回で、3^37 と 3^38 の間に 10^18 があることも確かめられました。

問 3 2 つの周期と曜日が重なる日 (分野 3、8)

今日は月曜日で、6 日ごとの掃除と 8 日ごとの点検を両方しました。次に、掃除と点検が同じ日にあって、しかもその日が月曜日になるのは何日後ですか。

掃除と点検が重なるのは、6 と 8 の最小公倍数の日ごとです。最小公倍数は 6 × 8 ÷ 最大公約数 2 = 24 なので、24 日ごとです。曜日の周期 7 と合わせると、24 と 7 の最小公倍数で、24 と 7 の最大公約数は 1 なので 168 日後です (3-1 の最大公約数と、8-1 の周期)。

問 4 2 個のサイコロの大きい方の目 (分野 4)

サイコロを 2 個振り、大きい方の目 (同じなら、その目) を得点にします。得点の期待値はいくつですか。

得点が k 以下になるのは、2 個とも k 以下のときで、確率は (k/6)²です。だから得点がちょうど k の確率は (k/6)² − ((k − 1)/6)² です。36 通りを全部数えても出せます。

動かす 問 3 と問 4

python実行可能
出力

▶ 実行ボタンを押すと結果がここに表示されます

実行すると、次の通りに出ます

問3 重なる 24
 月曜とも 168
 1 日ずつ探す 168
問4 161/36 4.472222222222222
式から 161/36

問 3 は 24 日ごとに重なり、月曜とも重なるのは 168 日後で、1 日ずつ探した答えとも合います。問 4 は 161/36 (約 4.47) です。1 個のときの 3.5 より大きくなります。

問 5 応答時間のばらつき (分野 5)

ある API の応答時間を 5 回測ると、120、80、100、140、60 ミリ秒でした。平均と標準偏差はいくつですか。

平均は 500 ÷ 5 = 100 です。平均からの差の 2 乗は 400、400、0、1600、1600 で、合計 4000 です。5 で割ると分散 800、その平方根で標準偏差は約 28.3 です。手元のデータを母集団とみなさず、標本から母集団の分散を見積もるときは、5 − 1 = 4 で割って分散 1000、標準偏差は約 31.6 です。統計検定では、どちらで割るかを問題文から読み分けます。

問 6 長さを 1 にそろえてから内積 (分野 6)

ベクトル a = (3, 0, 4) と b = (0, 5, 12) を、それぞれ長さ 1 にそろえて (各成分を長さで割って) から内積を取ると、いくつになりますか。

a の長さは √(9 + 0 + 16) = 5、b の長さは √(0 + 25 + 144) = 13 です。そろえたベクトルは (3/5, 0, 4/5) と (0, 5/13, 12/13) で、内積は 4/5 × 12/13 = 48/65 (約 0.738) です。長さ 1 にそろえてから内積を取ると、コサイン類似度と同じ値になります。埋め込みの検索で、先に長さをそろえて保存しておくのは、このためです。

動かす 問 5 と問 6

python実行可能
出力

▶ 実行ボタンを押すと結果がここに表示されます

実行すると、次の通りに出ます

問5 平均 100
 5 で割る 28.28
 4 で割る 31.62
問6 5.0 13.0 48/65 0.738

pstdev は個数 n で割る標準偏差、stdev は n − 1 で割る標準偏差です。問 6 は長さが 5 と 13 で、そろえたあとの内積は 48/65 (約 0.738) です。

問 7 勾配降下法の 3 歩 (分野 7)

f(x) = x² − 4x を小さくしたいとします。x = 0 から、学習率 0.25 の勾配降下法で 3 歩動かすと、x はいくつになりますか。

傾き (微分) は f'(x) = 2x − 4 です。1 歩は x ← x − 0.25 × (2x − 4) なので、x = 0 → 1 → 1.5 → 1.75 です。一番小さくなる x = 2 に、半分ずつ近づいていきます。

問 8 2 でも 3 でも 7 でも割り切れない数 (分野 8)

1 から 10^18 までの整数のうち、2 でも 3 でも 7 でも割り切れない数はいくつですか。

10^18 個を全部調べるループは終わらないので、式で数えます。2 か 3 か 7 で割り切れる数を、3 つの集合の包除原理で数え (8-4)、全体から引きます (8-3 の余事象)。3 つの重なり (42 の倍数) は足す側に入ります。答えは 285714285714285714 個で、全体の 1/2 × 2/3 × 6/7 = 2/7 にほぼ当たります。式が正しいかは、N = 1000 のような小さい N で全部数えた答えと照らします。

動かす 問 7 と問 8

python実行可能
出力

▶ 実行ボタンを押すと結果がここに表示されます

実行すると、次の通りに出ます

問7 1 歩 1.0
問7 2 歩 1.5
問7 3 歩 1.75
問8 285714285714285714
N=1000 286
全部数えた 286

問 7 は 1.75 です。問 8 は 285714285714285714 個で、N = 1000 では、式の 286 と全部数えた 286 が一致しました。

本番で外れる所

全部調べると間に合わない

問 8 の上限 10^18 のように、全部調べるループでは終わらない大きさがよく出ます。コンテストの問題には、入力の上限 (制約) と時間の制限が書いてあります。書く前に、手間の上界を数えます (8-7)。

小数の誤差

問 4 の期待値は、小数で足すと 4.4722… の終わりの桁がずれることがあります。分数 (Fraction) で持つか、答えの出し方の決まり (誤差がどこまで許されるか) を問題文で読みます。

境目の読み落とし

「1 から N まで」か「0 から N − 1 まで」か、「以下」か「未満」か、同じ目のときはどうするか。総合問題の多くは、式は合っていても境目で外れます。小さい N で全部数えた答えと照らすのが、一番確かな確かめです。

仕事でどう使うか

総合問題の考え方は、仕事では次の所で効きます。

  • コーディングテスト。選考でアルゴリズムの問題が出る場合も、どの道具を使うかを先に言えると、手が止まりにくい
  • 性能の見積もり。データの件数から、ループの回数、log の段数、組の数を数え、遅くなる所を書く前に見つける
  • データの要約と判断。平均だけでなく標準偏差で散らばりを見る。施策の得と損は期待値で比べる
  • 機械学習。埋め込みの近さは内積、学習の 1 歩は勾配。何をしているかを式で読める

よくある問い

AtCoder とは何ですか

競技プログラミングのコンテストを開く日本のサイトです。初心者から中級者向けの ABC、初級者から上級者向けの ARC、世界の上位者向けの AGC、最適化の AHC があり、成績に応じてレーティングが付きます。

AtCoder に数学はどれくらい要りますか

ABC の前半なら、この数学の回の範囲 (Σ、余り、場合の数、包除原理など) と、ループや条件分岐が書ければ取り組めます。後半や ARC 以上では、整数論や数え上げのもっと深い道具が出てきます。公式の情報サイトに、分野別の講義の一覧があります。

統計検定 2 級と基本情報の数学は、どう違いますか

統計検定 2 級は統計が中心で、確率分布、推定、検定まで出ます。基本情報の科目 A は IT 全般の 60 問で、数学に当たるのは基礎理論 (基数の変換、確率と統計など) の一部です。統計検定には分野 4 と 5 が、基本情報の基礎理論には分野 1 (数の表し方) と分野 4、5 (確率と統計) が近い内容です。

総合問題で間違えたら、どこに戻ればよいですか

各問の見出しに書いた分野の回に戻ります。どの道具を使うかを見抜けなかったなら、分野 8 の考え方の回 (規則性、偶奇、余事象、包除原理、小問題、対称性、上界と下界) を読み直すと、問題の見方がそろいます。

確認クイズ

答えだと思う選択肢を押すと、その場で正誤と理由が開きます。3 問すべてに正しく答えると、この回は修了で、石が緑に変わります (この端末のブラウザに残ります)。間違えた問いは、あとから解き直せます。

1 問目

AtCoder の 4 種類のコンテストのうち、ちょうどの正解が無い最適化の問題で点数を競うのはどれですか。

2 問目

「1 から 100 の整数から、同じ数を選ばずにどんな 51 個を選んでも、差がちょうど 1 の 2 個が必ず入っている」ことを示すのに、まず使う道具はどれですか。

3 問目

データ 2、4、6 の標準偏差を、個数 n で割る式で出すとどれになりますか。

説明課題

「6 日ごとの掃除と 8 日ごとの点検が、同じ月曜日に重なるのが 168 日後になる理由」を、最大公約数、最小公倍数、周期の言葉を使って 3 文で説明してください。書いたら、下の模範解答を開いて比べてください。

模範解答

自分の説明を書いてから開いて、比べてください。

この回の先の一歩

問題を読んで「これは余りの周期」「これは余事象」と道具の名前が出てくれば、数学の回は身に付いています。いまの自分が転職までの道のどの段にいるかは、転職診断で確かめられます。

もっと深く

この回の続きを、ゆめさくのコースの章や道具で深められます。頁の中の確認クイズに答えたあと、手を動かす量を増やしたいときに使ってください。

一次資料

どれも 2026年10月30日に開いて、題と中身を確かめました。

次へ

分野 8 考え方の回

  1. 8-1規則性を見つける小さい場合を表にする、周期、差を取る頁で読む
  2. 8-2偶奇で考える偶数と奇数、変わらない量頁で読む
  3. 8-3余事象少なくとも 1 つは全体から引く頁で読む
  4. 8-4包除原理重なりを足して引く頁で読む
  5. 8-5小問題に分ける分割統治、小さい答えから大きい答え頁で読む
  6. 8-6対称性入れ替えても変わらない物頁で読む
  7. 8-7上界と下界見積もり、鳩の巣原理頁で読む
  8. 8-8コンテストと試験で確かめる全分野の総まとめこの回

分野 8 の頁へ戻るほかの分野を見る