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

C++で2つの数を使用して構築できる数を数える


X、Y、Nの3つの数値が提供されます(範囲[1、N]を定義するため)。目標は、XとYを使用して任意の回数だけ作成できる[1、N]の範囲内のすべての数値を見つけることです。

たとえば、X=2およびY=3の場合。番号6は、2回(2 + 2 + 2)または3回(3 + 3)を使用して作成できます。同様に、7は2を2回、3を1回(2 + 2 + 3)使用して構築できます。

これを行うには、1からNまでの各数値からXまたはYを減算します。最終的な数値が0に減少した場合は、カウントをインクリメントします。

例を挙げて理解しましょう。

入力

N=10 X=4, Y=3

出力

Total numbers constructed using X & Y only: 7

説明

Numbers constructed by 3 and 4 only:
3, 4, 6 (3+3), 7 (3+4), 8 (4+4), 9 (3+3+3), 10 (3+3+4)

入力

N=10 X=5, Y=4

出力

Total numbers constructed using X & Y only: 5

説明

Numbers constructed by 4 and 5 only:
4, 5, 8(4+4), 9 (4+5), 10 (5+5)

以下のプログラムで使用されているアプローチは次のとおりです

  • X、Y、Nの3つの整数を取ります。

  • 関数constructNums(int n、int x、int y)は、xとyのみを使用して作成できる数値の数を返します。

  • このような数値の場合、初期変数カウントを0とします。

  • forループを使用して数値の範囲をトラバースします。 i=1からi<=n

  • ここで、num =iごとに、whileループを使用してnum>0かどうかを確認します。

  • while(num%x ==0)で、numが0でない場合は、xを減算します。

  • while(num%y ==0)で、numが0でない場合は、yを減算します。

  • xとyを引いた後、数値が両方で割り切れず、両方よりも大きい場合。xとyの両方を減算します。

  • 外側のwhileループの後で、numが0かどうかを確認します。x、y、またはその両方がnumになる可能性があることを意味します。インクリメントカウント。

  • すべてのループの最後に、カウントには合計数が含まれます。

  • 結果としてカウントを返します。

#include <bits/stdc++.h>
using namespace std;
int constructNums(int n,int x,int y){
   int count = 0;
   for (int i = 1; i <= n; i++) {
      int num = i;
      while(num>0){
         while((num%x)==0 && num!=0)
         num-=x;
         while((num%y)==0 && num!=0)
         num-=y;
         if (num>x && num>y)
            num=num-x-y;
         else
            break;
      }
      if (num==0)
         { count++;}
   }
   return count;
}
int main(){
   int N=20;
   int X=5,Y=4;
   cout <<"Total numbers constructed using X & Y only:"<<constructNums(N,X,Y);
   return 0;
}

出力

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

Total numbers constructed using X & Y only:14

  1. C ++で多数を処理しますか?

    C ++では、Boostライブラリを使用して多数を使用できます。このC++Boostライブラリは、広く使用されているライブラリです。これは、さまざまなセクションで使用されます。それはアプリケーションの大きなドメインを持っています。たとえば、ブーストを使用すると、2 64のような多数を使用できます。 C++で。 ここでは、Boostライブラリの例をいくつか示します。大きな整数のデータ型を使用できます。 int128_t、int256_t、int1024_tなどのさまざまなデータ型を使用できます。これを使用すると、最大1024の精度を簡単に取得できます。 最初は、ブーストライブラリを使用して

  2. 2つの数値を交換するC++プログラム

    2つの数値を交換するプログラムを作成する方法は2つあります。 1つは一時変数を使用することを含み、2番目の方法は3番目の変数を使用しません。これらは次のように詳細に説明されています- 一時変数を使用して2つの数値を交換するプログラム 一時変数を使用して2つの数値を交換するプログラムは次のとおりです。 例 #include <iostream > using namespace std; int main() {    int a = 10, b = 5, temp;    temp = a;    a = b; &nbs