等差数列(AP)の交互符号付き平方級数の合計を求める方法
等差数列(AP)とは
等差数列(Arithmetic Progression:AP)とは、隣り合う項同士の差が常に一定である数列のことです。この一定の差は「公差」と呼ばれ、前項を基準にして隣の項を引くことで求められます。
具体例として、次の数列を見てみましょう。
5, 7, 9, 11, 13, 15, …
この等差数列の公差(d)は 2 です。つまり、各項は直前の項より必ず 2 大きくなっています。また、初項(a)は 5 です。
第 n 項を求めるための一般式は以下の通りです。
an = a + (n − 1) × d
問題の概要
本問題では、与えられた等差数列の各項を平方し、その符号を正と負で交互に付けた級数の合計を求めます。級数は次のような形になります。
a12 − a22 + a32 − a42 + a52 − …
入力例と出力例
Input: n = 2 Output: -10
解説
n はペアの個数を表しており、n = 2 の場合は級数は 2n = 4 項で構成されます。初項 1・公差 1 の等差数列を用いると、計算は以下のようになります。
1² − 2² + 3² − 4² = −10
C言語による実装例
#include <stdio.h>
int main() {
int n = 4;
int a[] = { 1, 2, 3, 4, 5, 6, 7, 8 };
int res = 0;
for (int i = 0; i < 2 * n; i++) {
if (i % 2 == 0)
res += a[i] * a[i];
else
res -= a[i] * a[i];
}
printf("The sum of series is %d", res);
return 0;
}実行結果
The sum of series is -36
コードのポイント
このプログラムでは、n = 4 として配列 a の先頭から 2n 個(8 個)の要素を順に処理します。ループ変数 i が偶数のときは a[i]² を加算し、奇数のときは減算することで、正負交互に符号が付いた平方の合計を実現しています。
実際の計算過程は次の通りです。
1² − 2² + 3² − 4² + 5² − 6² + 7² − 8² = 1 − 4 + 9 − 16 + 25 − 36 + 49 − 64 = −36
各要素を一度だけ走査するため、このアルゴリズムの時間計算量は O(n) となり、非常に効率的です。さらに、偶数番目と奇数番目のペアごとに (a₂ₖ₋₁² − a₂ₖ²) をまとめて計算すれば、オーバーフロー対策や最適化にも応用できます。
-
C言語でcos(x)級数の合計を計算するプログラム
本記事では、角度 x と項数 n が与えられたときに、cos(x)級数の合計を求めるC言語プログラムを解説します。ここで、x は余弦(コサイン)を求める角度、n は cos(x) 級数に含める項の数を表します。cos(x)とはcos(x) は三角関数の一つで、角度 x に対する余弦の値を計算するために使用される関数です。単位円上では、角度 x における点の x座標が cos(x) の値に対応します。数式cos(x) は以下のように無限級数(マクローリン展開)で表すことができます。$$\cos (x) = \displaystyle\sum\limits_{k=0}^\infty \frac{(
-
iPhoneのFace IDに別の顔を登録する方法【iOS 12以降の「代替の外観」設定】
iPhone Xとともに登場したFace IDは、多くの人を魅了しました。ティム・クックCEOが「スマートフォンの未来」とまで語ったこの生体認証システムにより、ユーザーはパスコードを入力することなく、自分の顔だけでiPhoneのロックを解除できるようになりました。 しかし当初のFace IDには一つ大きな制約がありました。それは、ロック解除用として登録できる顔が「1人分だけ」という点です。セキュリティの観点からは理にかなっていますが、緊急時に家族や信頼できる人にスマホを使ってもらいたい場面では、かえって不便に感じることもありました。 そんな悩みはiOS 12で解決されました。「代替の外観(Al