Skip to the content.

最終更新日:2026年7月15日

まず結論

条件付き文字列の数え方では、各位置を独立に選べるか、前の選択によって後ろの選択肢が変わるかを最初に確認します。

基本情報技術者試験では、次の切り分けが重要です。

各位置を独立に選べる
→ 選択肢の数を掛ける

前の選択で後ろが制限される
→ 形ごとに場合分けして足す

また、同じ文字や数字を繰り返してよい場合は、順列ではなく、各位置の選択肢を掛けて考えます。

直感的な説明

3文字のコードを作る場面を考えます。

各位置に数字0〜9の10種類を自由に使えるなら、

1文字目:10通り
2文字目:10通り
3文字目:10通り

なので、

10 × 10 × 10 = 1,000通り

です。

一方で、次のような条件がある場合は注意が必要です。

空白を使った後には数字を置けない

このとき、3文字の並びは自由ではありません。

数字・数字・数字
数字・数字・空白
数字・空白・空白

のように、許される形ごとに分けて数えます。

定義・仕組み

文字列や識別コードの数え方では、主に次の2つの法則を使います。

積の法則

複数の選択を順番に行い、それぞれの選択肢を組み合わせる場合は掛け算を使います。

1文字目が10通り
2文字目が10通り
3文字目が10通り

10 × 10 × 10

各位置を独立に選べることが前提です。

和の法則

互いに重ならない複数のパターンがある場合は、それぞれを数えて足します。

数字3文字のパターン
+
数字2文字と空白のパターン
+
数字1文字と空白2文字のパターン

つまり、

形ごとに掛け算
最後に足し算

という流れです。

重複を許す場合

同じ数字や文字を繰り返してよい場合、各位置で同じ選択肢を何度でも使えます。

例えば、10種類の数字から3文字を作り、同じ数字を繰り返してよいなら、

10 × 10 × 10 = 10³

です。

これは、異なる3個を並べる順列 10P3 ではありません。

このテーマは、基本情報技術者試験の「基礎理論」と関係する内容です。公式の出題範囲やシラバスは、IPA:基本情報技術者試験 から確認できます。

科目Aでどう出る?

科目Aでは、パスワード、識別コード、文字列、ビット列などの組合せ数を求める問題として出題されます。

まず、次の順番で確認します。

1. 各位置で使える文字は何種類か
2. 同じ文字を繰り返してよいか
3. 各位置を独立に選べるか
4. 禁止されている並びはあるか

各位置を独立に選べるなら、選択肢の数を掛けます。

英大文字26種類から4文字
重複使用可

26 × 26 × 26 × 26

一方、次のような条件があれば場合分けが必要です。

  • 特定の文字は先頭に使えない
  • 空白の後には文字を置けない
  • 数字は末尾にしか置けない
  • 同じ文字を連続して使えない

試験では、条件文を読み飛ばして単純に掛け算しないことが大切です。

科目Bでどう使う?

科目Bでは、文字列生成や探索処理の候補数を考える場面で役立ちます。

例えば、プログラムが次のような条件で候補を生成するとします。

先頭は必ず数字
途中から空白を使える
空白を使った後は空白だけ

この場合、全候補を作るループや再帰処理では、状態によって次に選べる文字が変わります。

まだ空白を使っていない
→ 数字または空白を選べる

すでに空白を使った
→ 空白だけ選べる

科目Bでは、単に答えの個数を求めるだけでなく、条件によって分岐する処理を読み取る視点が役立ちます。

よくある誤解・混同

誤解 正しい理解
各位置に11種類あるので、常に11の累乗でよい 禁止パターンがある場合は、各位置を独立に選べない
同じ数字を使える場合も順列を使う 重複を許す場合は、各位置の選択肢を掛ける
場合分けしたら最後も掛ける 互いに重ならないパターンは最後に足す
空白は1種類なので無視してよい 空白を置いた後の制約が重要になることがある
条件付きでも全体から禁止パターンを引けば必ず簡単 形ごとに直接数える方が分かりやすい場合も多い

一番重要な判断軸は、各位置を独立に選べるかどうかです。

独立に選べる
→ 掛け算

独立に選べない
→ 状態や形で場合分け

まとめ(試験直前用)

  • 各位置を独立に選べるなら、選択肢の数を掛ける
  • 前の選択で後ろが制限されるなら、形ごとに場合分けする
  • 互いに重ならないパターンは最後に足す
  • 同じ文字を繰り返してよい場合は、順列ではなく累乗を考える
  • 「先頭」「以降」「後には置けない」などの条件語を見落とさない

© 2024-2026 stemtazoo. All rights reserved.