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

C++でMを法とする2つの数値の合計を求める方法

この問題では、3つの数値 abM が与えられます。私たちの課題は、2つの数値の合計を M で割った余り(剰余)を求めるプログラムを作成することです。

問題を理解するための例

入力: a = 14, b = 54, m = 7
出力: 5
説明: 14 + 54 = 68、68 % 7 = 5

解法のアプローチ

この問題は非常にシンプルで、以下の手順で解くことができます。

まず、数値 a と b を足し合わせます。次に、その合計を M で割った余りを計算して出力します。C++では剰余演算子「%」を使用することで、簡単に余りを求めることができます。

実装例

解法の動作を示すプログラムは以下の通りです。

#include <iostream>
using namespace std;
int moduloSum(int a, int b, int M) {
    return (a + b) % M;
}
int main() {
    int a = 35, b = 12, M = 7;
    cout << "The sum modulo is " << moduloSum(a, b, M);
    return 0;
}

出力

The sum modulo is 5

このプログラムでは、a = 35 と b = 12 の合計は 47 となり、47 を 7 で割った余りは 5 です。そのため、「The sum modulo is 5」が出力されます。

なお、a と b が非常に大きな数値になる場合、合計が int 型の範囲を超えてオーバーフローする可能性があります。そのようなケースでは、long long 型などより大きなデータ型を使用することを検討してください。

  1. C++でN未満の2つの数の倍数の合計を求める方法

    問題概要 この問題では、3つの整数 M1、M2、N が与えられます。求めるのは、N 未満に存在する M1 と M2 の倍数をすべて足し合わせた合計値です。 つまり、N 未満の数のうち、M1 または M2 の倍数に該当するものをすべて加算します。 問題を理解するための例 入力: N = 13, M1 = 4, M2 = 6 出力: 30 解説: 13 未満で 4 または 6 の倍数となる数は「4, 6, 8, 12」です。したがって合計は 4 + 6 + 8 + 12 = 30 となります。 解法1:シンプルな全探索アプローチ 最も基本的な解決策は、1 から N 未満まで順にループ処理を行い、M

  2. C++で解くTwo Sum IV ― 二分探索木(BST)が入力の場合

    問題概要 二分探索木(BST)とターゲット値が1つ与えられます。このとき、BST内に「2つの要素の和がターゲット値と等しくなる」ような組み合わせが存在するかどうかを判定するのが本問題です。 例えば、次のような木が入力として与えられた場合を考えてみましょう。 この場合、出力は True(真)となります。 解法のアプローチ この問題は、BSTを中間順(inorder)走査して昇順の配列を作り、その後「双方向ポインタ(two pointer)」を使うことで効率的に解けます。具体的には、以下の手順に従います。 値を格納するための配列 v を定義します。 関数 inorder() を定義します(引