C言語でnPr(順列)を計算するプログラムの書き方
本記事では、n個の中からr個を選んで並べる順列「nPr」の値を、C言語を使って計算する方法を解説します。ここで、Pは順列を表し、nは全体の要素数、rは並べる要素の数を意味します。
順列とは、データを一定の順序に従って並べることを指します。順列と組み合わせの違いは、順列が「並べ方」の総数を求めるのに対し、組み合わせは集合から要素を「選び方」の総数を求めるという点にあります。
順列を求めるための公式は以下の通りです。
nPr = (n!)/(n-r)!
計算例
入力:n=5、r=2 出力:20
この例では、5個の要素から2個を選んで並べる方法が20通りあることを示しています。
アルゴリズム
開始
ステップ1:nPrの値を計算する関数を宣言する
int cal_n(int n)
IF n <= 1
Return 1
return n*cal_n(n-1)
ステップ2:最終的なnPrを求める関数を宣言する
int nPr(int n, int r)
return cal_n(n)/cal_n(n-r)
ステップ3:main()内で処理を行う
変数を int n=5, r=2 として宣言する
nPr(n, r) の結果を出力する
終了C言語による実装例
#include<stdio.h>
// nPr用に階乗を計算する関数
int cal_n(int n){
if (n <= 1)
return 1;
return n*cal_n(n-1);
}
// 最終的なnPrを計算する関数
int nPr(int n, int r){
return cal_n(n)/cal_n(n-r);
}
int main(){
int n=5, r=2;
printf("value of %dP%d is %d", n, r, nPr(n, r));
return 0;
}実行結果
value of 5P2 is 20
このプログラムでは、再帰的に階乗を計算するcal_n関数を定義し、その結果を利用してnPr関数が「n! ÷ (n-r)!」を求めています。大きな数を扱う場合はオーバーフローに注意し、必要に応じてlong long型などを使用することをおすすめします。
-
正方形に内接する円の面積を求めるC言語プログラム
正方形に内接する円とは、正方形の四つの辺すべてに接する円のことです。このとき、内接円の直径は正方形の一辺の長さと等しくなります。内接円の面積は、次の公式で計算できます。面積 = (π / 4) × a × aここで「a」は正方形の一辺の長さです。これは、内接円の半径が「a / 2」になるため、一般的な円の面積の公式「π × r2」に代入すると「π × (a/2)2 = (π/4) × a2」となることに基づいています。プログラムのロジック内接円の面積は、公式「((π / 4) × a × a)」を用いて計算します。そのために、数学的に 22/7 すなわち 3.14 とされる円周率(π)の値をあ
-
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