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

C++の範囲内の1進数をカウントする


範囲を表す2つの数値の開始と終了が与えられます。目標は、[開始、終了]の間に存在する1進数の数を見つけることです。

次の手順で、数値が単項であるかどうかを確認できます。数値を13とすると、12 + 32 =10、12 + 02 =1です。したがって、この方法での最終的な合計は1なので、13は単項です。

入力

start=1 end=20

出力

Count of Unary Numbers in a Range are: 5

説明

The numbers are :
1, 7, 10, 12, and 13

入力

start=50 end=100

出力

Count of Unary Numbers in a Range are: 7

説明

The numbers are −
59, 63, 67, 74, 75, 78, and 89

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

1から9の間の数字1と7は単項です。他の数値については、1が得られるまで、桁の2乗の合計を使用します。範囲内のすべての数値に対してこのプロセスを続行します。この方法で検出されたすべての1進数のインクリメントカウント。

  • 2つの整数を開始し、入力として終了します。

  • 関数check_unary(int number)は、渡された値が単項の場合はtrueを返し、そうでない場合はfalseを返します。

  • 関数Unary_range(int start、int end)は範囲変数を受け取り、範囲内にある単項数の数を返します。

  • 初期カウントを0とします。forループを使用して、i=startからendまでトラバースします。 check_unary(i)がtrueを返す場合は、カウントをインクリメントします。

  • check_unary(int number)内で、一時変数のカウントを取得します。

  • 数値Nが1、7の場合、trueを返します。 10未満の他のすべての数値に対してfalseを返します(数値/ 10 ==0)。

  • 次に、whileループで、桁の2乗の合計を計算します。

  • 合計が1になるまで、このような連続合計に対して再度check_unary(int number)を呼び出します。

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

#include <iostream>
using namespace std;
bool check_unary(int number){
   int total;
   if (number == 1 ){
      return true;
   }
   else if(number == 7){
      return true;
   }
   else if (number / 10 == 0){
      return false;
   }
   while (number!= 0){
      int temp = number % 10;
      total = total + temp * temp;
      number = number / 10;
   }
   check_unary(total);
}
int Unary_range(int start, int end){
   int count = 0;
   for (int i = start; i <= end; i++){
      if (check_unary(i) == 1){
         count++;
      }
   }
   return count;
}
int main(){
   int start = 200, end = 400;
   cout<<"Count of Unary Numbers in a Range are: "<<Unary_range(start, end);
   return 0;
}

出力

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

Count of Unary Numbers in a Range are: 31

  1. C++の平面内の平行四辺形の数

    平行四辺形を形成する点を含む平面が与えられます。タスクは、与えられた点を使用して形成できる平行四辺形の数を計算することです。平行四辺形では、四辺形の反対側は平行であるため、反対の角度は等しくなります。 入力 − int a[] = {0, 2, 5, 5, 2, 5, 2, 5, 2} Int b[] = {0, 0, 1, 4, 3, 8, 7, 11, 10} 出力 −平面内の平行四辺形の数− 3 説明 −(x、y)点が与えられ、これらの点を使用して、図に示すように3つの平行四辺形のカウントを形成できます。 入力 − a[] = {0, 3, 1, 4, 1, 5} b

  2. C++で1からNまでの概素数の数を見つける

    数Nがあるとします。1からNの範囲でほぼ素数を見つける必要があります。正確に2つの異なる因子がある場合、その数は概素数と呼ばれます。数には任意の数の非素因数を含めることができますが、2つの素因数である必要があります。したがって、Nが2の場合、出力は2になります。6と10の2つの数値があります。 ここでは、エラトステネスのふるいアプローチを使用します。より良いアイデアを得るために、次の実装を確認してください。 例 #include<iostream> #define N 100005 using namespace std; bool prime[N]; void SieveOfE