मान लीजिए कि हमारे पास एक गैर-ऋणात्मक पूर्णांक n है। हमें सभी संख्याओं को अद्वितीय अंकों x के साथ गिनना है, जहां x 0 से 10^n की सीमा में है। इसलिए यदि संख्या n 2 है, तो परिणाम 91 होगा, क्योंकि हम 11, 22, 33, 44, 55, 66, 77, 88, 99 के बिना 0 से 100 तक की संख्याएँ खोजना चाहते हैं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
अगर n 0 है, तो 1 लौटाएं
-
n :=10 का न्यूनतम और n
-
अगर n 1 है, तो वापस 10
-
उत्तर:=9 और सेवानिवृत्त:=10
-
मेरे लिए 2 से n की सीमा में
-
उत्तर:=उत्तर * (9 - i + 2)
-
रिट:=रिट + उत्तर
-
-
वापसी रिट
उदाहरण(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