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