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

C++でxとの合計がxとのXORに等しい数をカウントします


私たちは数Xです。目標は、Xとの合計がXとのXORに等しい0からXまでの数を見つけることです。

これを行うには、noをトラバースします。 i=0からi<=Xまで、および各iについて、(i + X ==i ^ X)の場合、カウントをインクリメントします。

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

入力 − x =6

出力 −Xとの合計==XとのXOR:2

の数の数

説明 −数字は0と1のみです。

入力 − x =20

出力 −Xとの合計==XとのXOR:8

の数の数

説明 −数字は0 1 2 3 8 9 10 11

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

  • 整数Xを取ります。

  • 関数sumisXOR(int x)はxを取り、xとの合計がxとのxorと等しい数のカウントを返します。

  • 初期カウントを0とします。

  • i=0からi<=xまでトラバースします。

  • i + x ==i^xの場合。インクリメントカウント

  • forループカウントの最後に、目的の結果が得られます...

  • カウントを返し、印刷します。

#include <bits/stdc++.h>
#include <math.h>
using namespace std;
int sumisXOR(int x){
   int count = 0;
   for (int i = 0; i <= x; i++){
      if((i+x)==(i^x))
         { count++; }
   }
   return count;
}
int main(){
   int X = 15;
   int nums=sumisXOR(X);
   cout <<endl<<"Count of numbers whose sum with X == XOR with X: "<<nums;
   return 0;
}

出力

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

Count of numbers whose sum with X == XOR with X: 1

  1. Xとの合計がC++のフィボナッチ数であるノードをカウントします

    ノードの重みを数値として持つ二分木を指定します。目標は、その数がフィボナッチ数であるような重みを持つノードの数を見つけることです。フィボナッチ数列の数は次のとおりです。0、1、1、2、3、5、8、13…。n番目の数はの合計です。 (n-1)番目と(n-2)番目。重みが13の場合、それはフィボナッチ数であるため、ノードがカウントされます。 例 入力 temp=1。値を入力した後に作成されるツリーを以下に示します- 出力 Count the nodes whose sum with X is a Fibonacci number are: 3 説明 we are given with

  2. N以下で、C++の合計がSである最小数

    問題の説明 1からNまでのN個の数とS個の数が与えられます。タスクは、合計してSを与える最小数の数を出力することです 例 n=7およびs=10の場合、最低2つの数字が必要です (9, 1) (8, 2) (7, 3) (6, 4) アルゴリズム Answer can be calculated using below formula (S/N) + 1 if { S %N > 0} 例 #include <bits/stdc++.h> using namespace std; int getMinNumbers(int n, int s) {    r