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

C ++で指定された条件下で変更されているときに、最後のXとYを見つけます


2つの正の整数XとYの初期値があると考えてください。XとYの最終値を見つけて、以下に説明するように変更が加えられるようにします-

  • step1 − X=0およびY=0の場合はプロセスを終了し、それ以外の場合はステップ2に進みます

  • step2 − X> =2Yの場合は、X =X – 2Yに設定し、step1に進みます。それ以外の場合は、step3に進みます

  • step3 − Y> =2Xの場合は、Y =Y – 2Xに設定し、step1に進みます。それ以外の場合は、プロセスを終了します。

数値XとYは範囲[0と1018]になるため、ブルートフォースアプローチを使用できます。

#include<iostream>
using namespace std;
void alterNumber(long long x, long long y) {
   while (1) {
      if (x == 0 || y == 0)
         break;
      if (x >= 2 * y)
         x = x % (2 * y);
      else if (y >= 2 * x)
         y = y % (2 * x);
      else
         break;
   }
   cout << "X: " << x << "\n" << "Y: " << y;
}
int main() {
   long long x = 12, y = 5;
   alterNumber(x, y);
}

出力

X: 0
Y: 1

  1. LCMとHCFがC++で与えられたときに他の数を見つけます

    数値Aがあり、LCMとGCDの値があるとすると、別の数値Bを見つける必要があります。A=5、LCMが25、HCF =4の場合、別の数値は4になります。 $$𝐴∗𝐵 =𝐿𝐶𝑀∗𝐻𝐶𝐹$$ $$𝐵=\frac {LCM * HCF} {A} $$ 例 #include <iostream> using namespace std; int anotherNumber(int A, int LCM, int GCD) {    return (LCM * GCD) / A; } int main() {    int A

  2. 行と列の最大の要素がPythonで指定されている場合に、元の行列を見つけます

    それぞれサイズNとMの2つの配列AとBがあり、1つのN X Mバイナリ行列もあるとします。1は元の行列に正の整数があったことを示し、0は位置は元の行列にも0を保持しています。 A [i]がi番目の行の最大要素を示し、B [j]がj番目の列の最大要素を示すように、元の行列を生成する必要があります。 したがって、入力がA =[4、2、3]、B =[3、1、0、0、4、0、5]行列のような場合、出力は行列になります これを解決するには、次の手順に従います- N:=Aのサイズ M:=Bのサイズ 0からNの範囲のiの場合、実行 0からMの範囲のjについては、次のようにします