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

C++では0を数字として数えます


数値Nが提供されます。目標は、数字が0で、範囲が[1、N]の数値を見つけることです。

これを行うには、10からNまでの数値をトラバースし(1から9までをチェックする必要はありません)、各数値について、whileループを使用して各桁をチェックします。ゼロ増分カウントとして数字が見つかった場合は、次の数字に移動します。それ以外の場合は、数字を10減らして、数字が>0になるまで数字をチェックします。

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

入力

N=11

出力

Numbers from 1 to N with 0 as digit: 1

説明

Starting from i=10 to i<=11
Only 10 has 0 as a digit. No need to check the range [1,9].

入力

N=100

出力

Numbers from 1 to N with 0 as digit: 10

説明

10, 20, 30, 40, 50, 60, 70, 80, 90, 100. Ten numbers have 0 as digits.

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

  • 整数Nを取ります。

  • 関数haveZero(int n)は、パラメーターとしてnを取り、数字として0を含む数値のカウントを返します

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

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

  • ここで、num =iごとに、whileループを使用してnum%10 ==0かどうかを確認し、falseの場合は、numを10で除算し、num>0になるまで次の桁に移動します

  • trueの場合、それ以上のチェックを停止し、カウントをインクリメントして、whileループを中断します。

  • すべてのループの終わりに、カウントは1からNまでの数字として0の合計数になります。

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

#include <bits/stdc++.h>
using namespace std;
int haveZero(int n){
   int count = 0;
   for (int i = 1; i <= n; i++) {
      int num = i;
      while(num>1){
         int digit=num%10;
         if (digit == 0){
            count++;
            break;
         }
         else
            { num=num/10; }
      }
   }
   return count;
}
int main(){
   int N = 200;
   cout <<"Numbers from 1 to N with 0 as digit: "<<haveZero(N);
   return 0;
}

出力

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

Numbers from 1 to N with 0 as digit: 29

  1. C++で一意の桁を持つ数を数える

    非負の整数nがあるとします。一意の数字xを持つすべての数値をカウントする必要があります。xは0〜10^nの範囲です。したがって、数値nが2の場合、11、22、33、44、55、66、77、88、99なしで0から100までの数値を検索するため、結果は91になります。 これを解決するには、次の手順に従います- nが0の場合、1を返します n:=最小10およびn nが1の場合、10を返します ans:=9およびret:=10 2からnの範囲のiの場合 ans:=ans *(9 – i + 2) ret:=ret + ans retを返す

  2. C++で数字として4を持つ1からnまでの数を数えます

    このチュートリアルでは、数字が4である1からnまでの数字を見つけるプログラムについて説明します。 このために、番号nが提供されます。私たちの仕事は、数字の1つとして4を含むすべての数字を数え、それを印刷することです。 例 #include<iostream> using namespace std; bool has4(int x); //returning sum of digits in the given numbers int get_4(int n){    int result = 0;    //calculating the