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