কম্পিউটার

C++-এ এক অঙ্কের সংখ্যা


ধরুন আমাদের একটি সংখ্যা n আছে, আমাদের n-এর থেকে কম বা সমান সমস্ত অ-ঋণাত্মক সংখ্যায় উপস্থিত 1 সংখ্যার মোট সংখ্যা গণনা করতে হবে। তাই যদি ইনপুট 15 হয়, তাহলে আউটপুট হবে 8, কারণ 1 আছে এমন সংখ্যা [1,10,11,12,13,14,15], সেখানে 8 1s আছে।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • ret :=0

  • শুরু করার জন্য i :=1, যখন i <=n, i =i * 10 do −

    • 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

  • রিটার্ন রিটার্ন

উদাহরণ

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

#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++ এ মিতব্যয়ী নম্বর

  2. C++ পেন্টাটোপ নম্বর

  3. C++ এ এনকোড নম্বর

  4. C++ এ একজনের পূর্ণসংখ্যার পরিপূরক খুঁজুন