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

C++でゼロ以外のすべての数字で割り切れる範囲内の数値をカウントします


数値の範囲を定義するために、STARTとENDの2つの数値が提供されます。目標は、ゼロ以外のすべての数字で割り切れる[START、END]の範囲内のすべての数値を見つけることです。これを行うには、STARTからENDまで数値をトラバースし、数値ごとに、whileループを使用して数値がゼロ以外のすべての数字で割り切れるかどうかを確認します。はいの場合、カウントをインクリメントします。

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

入力

START=10 END=20

出力

Numbers that are divisible by all its non-zero digits: 14

説明

Numbers 10, 11, 12, 15, 20 are divisible by all their non-zero digits.

入力

START=100 END=200

出力

Numbers that are divisible by all its non-zero digits: 25

説明

This is list of numbers divisible by all non-zero digits : 100 101 102 104 105 110 111 112 115 120 122 124 126 128 132 135 140 144 150 155 162 168 175 184 200

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

  • 範囲変数として整数のSTARTとENDを取ります。

  • 関数divisiblebyDigits(int start、int end)は範囲変数を受け取り、ゼロ以外のすべての桁で割り切れる数のカウントを返します。

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

  • 変数フラグを0とします

  • forループを使用して数値の範囲をトラバースします。 i=開始から終了

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

  • Digit =num%10を計算します。数字>0かつi%digit ==0の場合、フラグ=1を設定します。それ以外の場合はflag=0でブレークします。 num =num / 10を減らして、次の桁を確認します。

  • ゼロ以外のすべての数字がiを完全に除算する場合、フラグは1です。カウントをインクリメントします。

  • すべてのループの終わりに、カウントはゼロ以外の数字で割り切れる総数になります

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

#include <bits/stdc++.h>
using namespace std;
int divisiblebyDigits(int start, int end){
   int count = 0;
   int flag=0;
   for (int i = start; i <= end; i++){
      int num=i;
      while(num>0){
         int digit=num%10;
         if(digit>0){
            if(i%digit==0)
               { flag=1; } //set flag
            else{
               flag=0; //un-set flag
               break;
            }
         }
         num=num/10;
      }
      if(flag==1) //divisible by all non-zero digits {
         count++;
         //cout<<i<<" ";
      }
   }
   return count;
}
int main(){
   int START = 10, END = 50;
   cout <<"Numbers that are divisible by all its non-zero digits: "<< divisiblebyDigits(START,END);
   return 0;
}

出力

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

Numbers that are divisible by all its non-zero digits: 14

  1. C++で指定された条件を満たす可能性のあるすべてのN桁の数値をカウントします

    このチュートリアルでは、与えられた条件を満たす可能なN桁の数字の数を見つけるプログラムについて説明します。 このために、整数が提供されます。私たちの仕事は、N桁の数字のどれが続くかを確認することです 数値+逆(数値)=10N -1 例 #include <bits/stdc++.h> using namespace std; //returning the count of numbers string count_num(int N){    if (N % 2 == 1)       return 0;   &n

  2. C ++ですべての桁が区別されるように、指定された数値よりも厳密に小さい数値を出力します

    この問題では、番号nが与えられます。私たちの仕事は、すべての桁が区別できるように、n未満の最大数を印刷することです。 問題を理解するために例を見てみましょう Input: n = 2332 Output: 2319 この問題を解決するために、数値のカウントを逆にします。つまり、nから0になります。そして、現在のカウント値が条件を満たしている場合は、数字が異なる数値をチェックして、出力してループを終了します。それ以外の場合は、ループを続行します。ループが実行される最大回数は常にn未満です。 例 ソリューションを実装するためのプログラム #include <bits/stdc++.h&