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

C++で四辺形の4番目の辺を求めるプログラム

3つの整数 a、b、c が与えられているとします。これらを使って、非退化(面積が0にならない)な単純四辺形の形をした閉じたフェンスを作りたいと考えます。すでに長さ a、b、c の3本の辺は手元にあり、残る4番目の辺 d の長さを求めるのがこの問題の目的です。

例えば、入力が a = 12、b = 34、c = 56 の場合、プログラムは 100 を出力します。ただし、これは唯一の正解ではなく、条件を満たす他の値(例えば 42 など)も答えとして成立します。

解き方の考え方

四辺形が成り立つためには、「どの1辺の長さも、他の3辺の合計より短くなければならない」という条件が必要です。もし1辺が他の3辺の合計と等しくなると、図形はつぶれて線分になってしまい(退化)、四辺形として成立しません。

したがって、4番目の辺 d は次の不等式を満たす必要があります。

d < a + b + c

この条件を確実に満たす値を1つ返せばよいので、最もシンプルな解法は次のようになります。

return a + b + c - 2;

a + b + c そのものではなく、余裕を持たせて 2 を引いた値を返すことで、常に有効な四辺形が構成できるようにしています。

C++での実装例

それでは、実際のコードを見てみましょう。

#include<bits/stdc++.h>
using namespace std;

int solve(int a, int b, int c){
    return a + b + c - 2;
}

int main(){
    int a = 12;
    int b = 34;
    int c = 56;
    cout << solve(a, b, c) << endl;
    return 0;
}

入力

12, 34, 56

出力

100

解説

この例では、3辺の合計は 12 + 34 + 56 = 102 です。そこから 2 を引いた 100 が返されます。100 は 102 より小さいため、4番目の辺として採用しても四辺形の成立条件を満たし、閉じたフェンスを作ることができます。

なお、答えはこの値に限定されません。上記の不等式を満たす任意の正の整数(例えば 42 など)も同様に有効な解となります。競技プログラミングなどでは「条件を満たす答えを1つ出力すればよい」問題として扱われることが多いです。

  1. C++で最小公倍数(LCM)を求めるプログラム:初心者向けに2つの方法を解説

    最小公倍数(LCM: Least Common Multiple)とは、2つの整数に共通する倍数の中で最も小さい数のことです。プログラミングの基礎的なアルゴリズム学習においても頻出のテーマであり、C++を使えば簡単に求めることができます。最小公倍数とは?具体例で確認例として、15と9という2つの数を考えてみましょう。それぞれ素因数分解すると次のようになります。15 = 5 × 3 9 = 3 × 3この場合、15と9の両方を割り切れる最小の数、つまり最小公倍数は 45 となります。方法1:大きい方の数から順に増やしていく方法まず紹介するのは、最も直感的なアプローチです。2つの数のうち大きい方

  2. C++で2つの数の最大公約数(GCD)を求めるプログラム

    最大公約数(GCD)とは最大公約数(GCD: Greatest Common Divisor)とは、2つの整数をどちらも割り切る正の整数のうち、最も大きい数のことです。プログラミングの基礎的なアルゴリズム問題としてよく取り上げられるテーマであり、分数の約分や暗号処理など、さまざまな場面で活用されます。例として、45と27という2つの数を考えてみましょう。45 = 5 × 3 × 327 = 3 × 3 × 3両方の数に共通する素因数は「3 × 3」であるため、45と27の最大公約数は9となります。方法1:ユークリッドの互除法による実装2つの数の最大公約数を求める最も効率的な方法が「ユークリッド