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

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を返す

例(C ++)

理解を深めるために、次の実装を見てみましょう-

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int countNumbersWithUniqueDigits(int n) {
      if(n == 0)return 1;
      n = min(10, n);
      if(n == 1)return 10;
      int ans = 9;
      int ret = 10;
      for(int i = 2; i<= n; i++){
         ans *= (9 - i + 2);
         ret += ans;
      }
      return ret;
   }
};
main(){
   Solution ob;
   cout << (ob.countNumbersWithUniqueDigits(3));
}

入力

3

出力

739

  1. C ++で、N未満のすべての数値を最大2桁の一意の数字で出力します

    この問題では、整数Nが与えられ、N未満のすべての数値を、最大2つの一意の数字で出力しました。つまり、最大2つの異なる数字を使用して数値を作成できます。 。 問題を理解するために例を見てみましょう- Input: N = 17 Output: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 この問題を解決するために、2桁しかないすべての数字を生成します。数値生成プロセスは0から始まり、数値がN以上になると終了します。2つの一意に選択された場合、 num * 10+iとnum*10 + jを使用して再帰的に数値を生成します。 。このプロセスで重複する番号が発生する

  2. Pythonで偶数桁の数を検索する

    番号のリストがあるとします。桁数が偶数の数を数える必要があります。したがって、配列が[12,345,2,6,7896]の場合、12と7896の桁数は偶数であるため、出力は2になります。 これを解決するには、次の手順に従います- リストを取得し、各整数を文字列に変換します 文字列の長さが偶数の場合は、カウントを増やし、最後にカウント値を返します 例 理解を深めるために、次の実装を見てみましょう- class Solution(object):    def findNumbers(self, nums):       str_num =