C++で合計と積がどちらもNに等しい2つの数を見つける方法
このチュートリアルでは、x + y = n かつ x × y = n を満たす2つの数を見つけるC++プログラムを作成します。ただし、そのような数が存在しない場合もあります。その際は None を出力するようにします。それでは始めましょう。
解法の考え方
与えられた2つの値は、ある二次方程式の「解の和」と「解の積」に相当します。二次方程式の解と係数の関係より、判別式は n2 - 4n で表されます。この値が負( n2 - 4n < 0 )の場合、実数解は存在しないため、条件を満たす2つの数は見つかりません。
判別式が0以上の場合、求める2つの数は次の式で表されます。
$$\lgroup n + \sqrt{n^{2} - 4n}\rgroup/2$$ と $$\lgroup n - \sqrt{n^{2} - 4n}\rgroup/2$$
サンプルコード
それでは、実際のコードを見てみましょう。
#include <bits/stdc++.h>
using namespace std;
void findTwoNumbersWithSameSumAndProduct(double n) {
double imaginaryValue = n * n - 4.0 * n;
// 虚数解になるかどうかをチェック
if (imaginaryValue < 0) {
cout << "None";
return;
}
// x と y を出力
cout << (n + sqrt(imaginaryValue)) / 2.0 << endl;
cout << (n - sqrt(imaginaryValue)) / 2.0 << endl;
}
int main() {
double n = 50;
findTwoNumbersWithSameSumAndProduct(n);
return 0;
}実行結果
上記のプログラムを実行すると、以下の出力が得られます。
48.9792 1.02084
まとめ
本チュートリアルでは、和と積がどちらもnに等しい2つの数を求める方法を解説しました。二次方程式の判別式の符号を確認するだけで、解の存在を簡単に判定できるのがポイントです。チュートリアルの内容について質問がある場合は、コメント欄でお気軽にお知らせください。
-
【C++入門】2つの数値を乗算するプログラムの書き方
乗算(掛け算)の基本 2つの数値 a と b の乗算とは、両者を掛け合わせて「積」を求める計算のことです。概念的には、a の値を b の回数分だけ足し合わせることで、a と b の積を求めることができます。 例: 5 * 4 = 20 7 * 8 = 56 9 * 9 = 81 *演算子を使って2つの数値を乗算するプログラム C++では、* 演算子を使用することで、2つの数値の積をシンプルに計算できます。以下は、* 演算子を使って2つの数値を乗算するプログラムです。 サンプルコード #include <iostream> using namespace std; int main
-
C++で2つの数値を加算するプログラムの書き方【サンプルコード付き】
加算(足し算)は、最も基本的な算術演算の一つです。2つの数値を加算するプログラムは、指定された2つの数値の合計を計算し、その結果を画面に表示します。この記事では、C++で2つの数値を加算する方法を、変数を使った基本例と配列を使った応用例の2パターンに分けて解説します。例1:変数を使って2つの数値を加算するまずは、最もシンプルな方法です。2つの整数型変数を用意し、その合計を別の変数に格納して出力します。#include <iostream> using namespace std; int main() { int num1 = 15, num2 = 10, sum;