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

C++で配列内の指定した数Kで割り切れる要素の積を求める方法

整数がn個格納された配列arr[n]と整数kが与えられたとき、配列arr[]の中でkで割り切れるすべての要素の積を求めるのがこの問題の目的です。

この問題を解くには、配列の各要素を先頭から順に走査し、その要素がkで完全に割り切れるかどうかを判定します。割り切れた要素はすべて掛け合わせ、その結果を変数に格納していきます。例えば、配列arr[] = {1, 2, 3, 4, 5, 6}、k = 2が与えられた場合、2で割り切れる要素は2、4、6の3つであり、それらの積は48となります。

それでは、入力に対してどのような出力が期待されるのか、具体例で確認してみましょう。

入力

arr[] = {10, 11, 55, 2, 6, 7}
K = 11

出力

605

説明 − 11で割り切れる数は11と55のみであり、その積は605になります。

入力

arr[] = {9, 8, 7, 6, 3}
K = 3

出力

162

問題を解くためのアプローチ

  • 配列の末尾まで全体を走査します。

  • Kで割り切れるすべての整数を探します。

  • Kで割り切れる要素をすべて掛け合わせます。

  • 積を返します。

  • 結果を出力します。

アルゴリズム

開始
ステップ1 → 数Kで割り切れるすべての数を求める関数を宣言する
    int product(int arr[], int size, int k)
        int prod = 1 を宣言する
        for (int i = 0; i < size; i++) のループ
        IF (arr[i] % k == 0)
            prod *= arr[i] を実行
        終了
        終了
        prod を返す
ステップ2 → main() 内で
    int arr[] = {2, 3, 4, 5, 6} を宣言する
    int size = sizeof(arr) / sizeof(arr[0]) を宣言する
    int k = 2 を設定する
    product(arr, size, k) を呼び出す
終了

実装例

#include <iostream>
using namespace std;
//配列内でkで割り切れる要素を求める関数
int product(int arr[], int size, int k){
    int prod = 1;
    for (int i = 0; i < size; i++){
        if (arr[i] % k == 0){
            prod *= arr[i];
        }
    }
    return prod;
}
int main(){
    int arr[] = {2, 3, 4, 5, 6 };
    int size = sizeof(arr) / sizeof(arr[0]);
    int k = 2;
    cout<<"product of elements are : "<<product(arr, size, k);
    return 0;
}

実行結果

上記のコードを実行すると、次の出力が生成されます −

product of elements are : 48
  1. 【C++】配列内のすべての素数の積を求める方法

    整数型配列 arr[] が与えられたとき、その配列に含まれるすべての素数を見つけ出し、それらの積を計算するのが本記事のテーマです。素数とは、1とその数自身でしか割り切れない正の整数のことです。たとえば、2、3、5、7、11などが素数に該当します。それでは、次の配列を例に解を求めてみましょう。入力: arr[] = { 11, 20, 31, 4, 5, 6, 70 }出力: 1705説明: 配列内の素数は 11、31、5 の3つであり、その積は 11 × 31 × 5 = 1705 となります。入力: arr[] = { 1, 2, 3, 4, 5, 6, 7 }出力: 210説明: 配列内の

  2. C++で配列の全要素にXOR演算を適用して合計を最小化する方法

    問題の説明サイズNの配列が与えられます。配列の各要素とある整数XとのXOR演算を行ったとき、その結果の合計が最小となるようなXを見つけてください。例として、入力配列が arr[] = {8, 5, 7, 6, 9} の場合、最小合計は 30 になります。各配列要素の2進数表現は次のとおりです。8 : 1000 5 : 0101 7 : 0111 6 : 0110 9 : 1001X = 5 のとき、XOR演算後の各値と合計は以下のようになります。8 ^ 5 = 13 5 ^ 5 = 0 7 ^ 5 = 2 6 ^ 5 = 3 9 ^ 5 = 12 合計 = 30(13 + 0 + 2 + 3