Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में अंक 1 की संख्या


मान लीजिए हमारे पास एक संख्या n है, हमें n से कम या बराबर सभी गैर-ऋणात्मक संख्याओं में अंक 1 की कुल संख्या गिननी है। तो यदि इनपुट 15 है, तो आउटपुट 8 होगा, क्योंकि 1 वाली संख्याएं [1,10,11,12,13,14,15] हैं, वहां 8 बार 1 आता है।

इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे -

  • ret := 0

  • i := 1 से आरंभ करें, जब i <= n, i = i * 10 करें -

    • a := n / i, b := n mod i, x := a mod 10

    • यदि x, 1 के समान है, तो,

      • ret = ret + (a / 10) * i + (b + 1)

    • अन्यथा जब x, 0 के समान है, तो -

      • ret = ret + (a / 10) * i

    • अन्यथा

      • ret = ret + (a / 10 + 1) * i

  • ret लौटाएं

उदाहरण

बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें -

#include <bits/stdc++.h> using namespace std; class Solution {    public:    int countDigitOne(int n) {       int ret = 0;       for(long long int i = 1; i <= n; i*= (long long int)10){          int a = n / i;          int b = n % i;          int x = a % 10;          if(x ==1){             ret += (a / 10) * i + (b + 1);          }          else if(x == 0){             ret += (a / 10) * i;          } else {             ret += (a / 10 + 1) *i;          }       }       return ret;    } }; main(){    Solution ob;    cout << (ob.countDigitOne(15)); }

इनपुट

15

आउटपुट

8

  1. - C++ में मितव्ययी संख्या (Frugal Number)

    इस समस्या में, हमें एक धनात्मक पूर्णांक N दिया गया है। हमारा कार्य यह जांचने के लिए एक प्रोग्राम बनाना है कि दी गई संख्या मितव्ययी संख्या है या नहीं। मितव्ययी संख्या (FRUGAL NUMBER) − एक संख्या जिसके अंकों की संख्या उस संख्या के अभाज्य गुणनखंडन में अंकों की संख्या से सख्ती से अधिक है। उदाहरण &

  1. C++ में पेंटाटोप संख्या C++ में पेंटाटोप संख्या

    एक पेंटाटोप संख्या को पास्कल के त्रिभुज में पांचवीं संख्या के रूप में वर्णित किया गया है। अब, चूंकि यह पांचवीं संख्या है, इसका मतलब है कि पास्कल के त्रिभुज में कम से कम पांच संख्याएं होनी चाहिए, इसलिए इस श्रृंखला की पहली संख्या 1 4 6 4 1 से शुरू होती है जो पास्कल के त्रिभुज की चौथी पंक्ति है। तो, इस

  1. - C++ में इंटीजर का वन्स कॉम्प्लीमेंट खोजें

    इस सेक्शन में, हम देखेंगे कि इंटीजर का 1s कॉम्प्लीमेंट कैसे खोजें। हम कॉम्प्लीमेंट ऑपरेटर का उपयोग करके यह कार्य बहुत तेजी से कर सकते हैं, लेकिन यह 32-बिट कॉम्प्लीमेंटेड वैल्यू बनाएगा (4-बाइट इंटीजर)। यहां हम n-बिट नंबर्स का कॉम्प्लीमेंट चाहते हैं।मान लीजिए हमारे पास एक नंबर है जैसे 22। इसका बाइनरी