C++で中心二十面体数を計算するプログラムの作成方法
値 n が与えられたとき、n 番目の中心二十面体数、および n までの中心二十面体数列を生成して結果を表示するのが本記事の目的です。
中心二十面体数とは?
中心二十面体数(Centered Icosahedral Number)とは、中心付き図形数の一種で、正二十面体(20個の面を持つ多面体)の構造を表現するために用いられる数です。中心に1つの点があり、その周囲に層状に点が配置されていくことで二十面体の形状が形成されます。
n = 1000 までの中心二十面体数列の最初のいくつかの値は以下の通りです。
1, 13, 55, 147, 309, 561, 923
中心二十面体数の計算式
中心二十面体数は、次の数式によって求めることができます。
$$(2n+1)\times\frac{5n^{2}+5n+3}{3}$$
入力例と出力例
入力:
number: 20
出力:
中心二十面体数:28741
入力:
number: 12
出力:
中心二十面体数:6525
アルゴリズム
開始
ステップ1 → 中心二十面体数を計算する関数を宣言する
int calculate(int num)
return (2 * num + 1) * (5 * num * num + 5 * num + 3) / 3
ステップ2 → main() 内で
int num = 20 を宣言する
calculate(num) の結果を出力する
終了C++による実装例
#include <bits/stdc++.h>
using namespace std;
// 中心二十面体数を計算する関数
int calculate(int num){
return (2 * num + 1) * (5 * num * num + 5 * num + 3) / 3;
}
int main(){
int num = 20;
cout<<"中心二十面体数:"<<calculate(num) << endl;
return 0;
}実行結果
上記のコードを実行すると、次の出力が得られます。
中心二十面体数:28741
コードの解説
このプログラムでは、まず calculate() 関数内で数式 $$(2n+1)\times\frac{5n^{2}+5n+3}{3}$$ をそのまま実装しています。整数演算のため、除算の結果も正確な整数値になります。
main() 関数では、求めたい項番号 num を設定し、calculate(num) を呼び出して結果を標準出力に表示します。num の値を変更すれば、任意の n 番目の中心二十面体数を簡単に求めることができます。
-
C++で10進数を16進数に変換するプログラムの作り方
10進数の数値が入力として与えられたとき、その数値を16進数に変換するのが本記事の目的です。 コンピュータの世界では、16進数は基数16で表現され、10進数は基数10で表現されます。10進数は0〜9の値を使って表されるのに対し、16進数は0〜15の数字を持ちます。そのうち10は「A」、11は「B」、12は「C」、13は「D」、14は「E」、15は「F」として表されます。 10進数から16進数への変換手順 10進数を16進数に変換するには、以下の手順に従います。 まず、与えられた数値を変換先の基数で割ります。たとえば、6789を16進数に変換する場合、基数である16で6789を割り、商を求め
-
C++で10進数を2進数に変換するプログラムの書き方
コンピューターの内部では、すべてのデータが2進数(基数2)として扱われています。一方、私たちが日常的に使う10進数は「0〜9」の数字を組み合わせた基数10の記数法です。この記事では、C++を使って入力された10進数を2進数へ変換するプログラムの考え方と実装方法を解説します。10進数から2進数への変換手順10進数を2進数に変換する基本的な方法は、「2で割った余りを順番に記録していく」ものです。具体的には次の手順で行います。まず、変換したい数値を基数である2で割り、商と余りを求めます。余りが0であればその桁は「0」、1であれば「1」として記録します。続いて、得られた商をさらに2で割り、同じように余