Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

nPr(順列の総数)を計算するC++プログラム

順列(nPr、P(n,r) とも表記されます)は、n 個の要素の中から r 個を選んで一列に並べる方法が何通りあるかを求めるための数学的な公式です。P(n, r) を求める公式は次のように表されます。

P(n, r) = n! / (n − r)!

n 個の要素からなる集合に対する順列の総数は n! で与えられます。ここで「!」は階乗(1 からその数までの積)を意味します。

入力:n=5; r=4;
出力:120

計算の流れ

n=5、r=4 の場合、次のように計算できます。

P(5, 4) = 5! / (5−4)! = 120 / 1 = 120
5! = 1 × 2 × 3 × 4 × 5 = 120

サンプルコード

以下は、階乗を求める関数を作成し、それを使って nPr を計算する C++ プログラムの例です。

#include<iostream>
using namespace std;

// 階乗を計算する関数
long int fact(int x) {
    int i, f = 1;
    for (i = 2; i <= x; i++) {
        f = f * i;
    }
    return f;
}

int main() {
    int n = 5, r = 4;
    long int npr;

    // P(n, r) = n! / (n-r)! を計算
    npr = fact(n) / fact(n - r);

    cout << npr << endl;
    return 0;
}

実行結果:

120

このプログラムでは、まず fact() 関数が引数として受け取った整数の階乗をループ処理で計算し返します。main 関数内では n!/(n−r)! に従って fact(n) を fact(n−r) で割ることで順列の総数を求め、その結果を出力しています。

  1. 正方形に内接する円の面積を求めるC言語プログラム

    正方形に内接する円とは、正方形の四つの辺すべてに接する円のことです。このとき、内接円の直径は正方形の一辺の長さと等しくなります。内接円の面積は、次の公式で計算できます。面積 = (π / 4) × a × aここで「a」は正方形の一辺の長さです。これは、内接円の半径が「a / 2」になるため、一般的な円の面積の公式「π × r2」に代入すると「π × (a/2)2 = (π/4) × a2」となることに基づいています。プログラムのロジック内接円の面積は、公式「((π / 4) × a × a)」を用いて計算します。そのために、数学的に 22/7 すなわち 3.14 とされる円周率(π)の値をあ

  2. sin(x)とcos(x)の値を計算するC++プログラムの解説

    sin(x)とcos(x)の値を計算するC++プログラム 本記事では、角度を入力として受け取り、その角度に対応するsin(x)(正弦)とcos(x)(余弦)の値を計算して結果を表示するC++プログラムを解説します。ライブラリ関数に頼らず、テイラー展開(マクローリン展開)を用いて数値を近似する手法を紹介します。 sin(x)とは sin(x)は三角関数の一つで、角度xに対する正弦の値を求めるために使用されます。直角三角形では、斜辺に対する対辺の比として定義されます。 $$\sin (x) = \displaystyle\sum\limits_{k=0}^\infty \frac{(-1)^{k