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

C ++で1つの数値を除算し、他の数値で割り切れる最小値


問題の説明

2つの整数pとqが与えられた場合、タスクは、q%x =0およびx%p =0となる最小の可能な数xを見つけることです。条件がどの数にも当てはまらない場合は、-1を出力します。

>

If p = 3 and q = 66 then answer is 3 as:
66 % 3 = 0
3 % 3 = 0

アルゴリズム

  • 数値xが指定された条件を満たす場合、xはpの倍数であり、qはxの倍数であるため、qがpで除算されることは明らかです。つまり、q%p=0です。
  • したがって、xの可能な最小値はpとqのGCDであり、qがpで割り切れない場合、指定された条件を満たす数値はありません。

#include <bits/stdc++.h>
using namespace std;
int getMinValue(int p, int q) {
   if (q % p == 0) {
      return __gcd(p, q);
   }
   return -1;
}
int main() {
   int p = 3;
   int q = 66;
   cout << "Minimum value = " << getMinValue(p, q) << endl;
   return 0;
}

上記のプログラムをコンパイルして実行する場合。次の出力を生成します-

出力

Minimum value = 3

  1. C ++で(i + j)がAとBの両方で割り切れるようにペア(i、j)をカウントします

    変数N、M、A、およびBが与えられます。目標は、正の数(i、j)の順序対を見つけて、それらの合計がAとBの両方で割り切れるようにすることです。1<=i<=Nおよび1<=j<=M。 iとjの2つのループを使用してトラバースします。合計(i + j)%A ==0 &&(i + j)%B==0の場合。インクリメントカウント。 例を挙げて理解しましょう。 入力 N = 5, M = 10, A = 2, B = 3; 出力 Ordered pairs (i,j) where (i+j) is divisible by both A & B: 9 説明 Pairs will be

  2. C++で指定された数kで割り切れるリンクリストの最大要素と最小要素

    リンクリストは、要素がポインタを介してリンクされている線形データ構造です。リンクリストの各要素またはノードには、データ部分とリンクがあります。または、次の要素へのポインタを順番に言うことができます。要素は、メモリ内で連続していない場所を取ることができます。 データ部分と次の要素へのリンクがある単一リンクリストが与えられます。もう1つの入力は数値Kです。タスクは、数値Kで割り切れるリンクリストの最大要素と最小要素を見つけることです。線形リンクリストは、一方向にのみ移動できます。各ノードで、データ部分の分割可能性をKで確認します。その数がこれまでに見つかった最大値または最小値である場合は、