मान लीजिए कि हमारे पास एक गैर-ऋणात्मक पूर्णांक 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