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

C++の除数のリストからAとBを見つけます


このチュートリアルでは、以下の問題を解決します。

整数の配列が与えられた場合、2つの数値AとBを見つける必要があります。配列内の残りのすべての数値はAとBの約数です。

数値がAとBの両方の約数である場合、その数値は配列に2回存在します。

問題を解決するための手順を見てみましょう。

  • 配列の最大数は、AとBの数の1つです。Aだとしましょう。

  • これで、Bは2番目に大きい数、またはAの約数ではない数になります。

コードを見てみましょう。

#include <bits/stdc++.h>
using namespace std;
void findTheDivisors(int arr[], int n) {
   sort(arr, arr + n);
   int A = arr[n - 1], B = -1;
   for (int i = n - 2; i > -1; i--) {
      if (A % arr[i] != 0) {
         B = arr[i];
         break;
      }
      if (i - 1 >= 0 && arr[i] == arr[i - 1]) {
         B = arr[i];
         break;
      }
   }
   cout << "A = " << A << ", B = " << B << endl;
}
int main() {
   int arr[] = { 3, 2, 3, 4, 12, 6, 1, 1, 2, 6 };
   findTheDivisors(arr, 10);
   return 0;
}

出力

上記のプログラムを実行すると、次の結果が得られます。

A = 12, B = 6

結論

チュートリアルに質問がある場合は、コメントセクションにそのことを記載してください。


  1. C++の2Dマトリックスからリンクリストを作成します

    行列が1つあるとすると、再帰的アプローチを使用して2Dリンクリストに変換する必要があります。 リストには右ポインタと下ポインタがあります。 したがって、入力が次のような場合 10 20 30 40 50 60 70 80 90 出力はになります これを解決するには、次の手順に従います- 関数make_2d_list()を定義します。これは、行列mat、i、j、m、n、を取ります。 iとjが行列の境界にない場合、- nullを返す temp:=値mat [i、j]で新しいノードを作成します 温度

  2. C++の単一の循環リンクリストで最小要素と最大要素を検索します

    ここでは、1つの単一循環リンク線形リストから最小値と最大値を取得する方法を説明します。基本的な考え方はとてもシンプルです。最後のノードの次の部分は最初のノードを指し、最初のノードも開始ポインターを使用して指します。リストに要素を挿入すると、新しく挿入されたノードの次の部分が挿入された後、開始ノードのアドレスで更新されます。 最初に、minには正の無限大が割り当てられ、maxには負の無限大が割り当てられます。次に、リストを左から右にトラバースします。現在の要素がmin要素よりも小さい場合は、minを更新し、現在の要素がmax要素よりも大きい場合は、maxを更新します。したがって、最小値と最大値