हमें इनपुट के रूप में एक नंबर N दिया गया है। लक्ष्य संख्या 1 से एन के बीच अंकों की कुल संख्या की गणना करना है। 1 से 9 तक की संख्या में प्रत्येक के लिए 1 अंक की आवश्यकता होती है, 11 से 99 में प्रत्येक के लिए 2 अंकों की आवश्यकता होती है, 100 से 999 में प्रत्येक के लिए 3 अंकों की आवश्यकता होती है और इसी तरह।
आइए उदाहरणों के साथ समझते हैं
इनपुट -एन=11
आउटपुट − 1 से N तक के अंकों की कुल संख्या इस प्रकार है:13
स्पष्टीकरण - संख्या 1 से 9 तक प्रत्येक में 1 अंक है:9 अंक 10, 11 में प्रत्येक में 2 अंक हैं। 4 अंक। कुल अंक=9+4=13.
इनपुट -एन=999
आउटपुट − 1 से N तक के अंकों की कुल संख्या है:2889
स्पष्टीकरण - संख्या 1 से 9 तक प्रत्येक में 1 अंक होता है:9 अंक 10 से 99 तक प्रत्येक में 2 अंक होते हैं। :180 अंक। 100 से 999 में प्रत्येक में 3 अंक होते हैं:2700 अंक कुल अंक =2700 + 180 + 9 =2889 अंक
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
हम दो दृष्टिकोणों का उपयोग करेंगे। एक संख्या संख्या में अंकों की गणना करने के लिए एक पुनरावर्ती फ़ंक्शन का उपयोग करने वाला पहला अनुभवहीन दृष्टिकोण। पारित संख्या को एक स्ट्रिंग में कनवर्ट करें। स्ट्रिंग की लंबाई अंक में अंक है। वर्तमान संख्या-1 को बार-बार दरकिनार करते हुए प्रत्येक संख्या के लिए ऐसा करें।
-
एक संख्या को धनात्मक पूर्णांक के रूप में लें।
-
फंक्शन Total_digits(int num) संख्या लेता है और 1 से num के बीच की संख्याओं में अंक लौटाता है।
-
अंकों में अंकों की गणना करने के लिए, संख्या को स्ट्रिंग में बदलें। (to_string(num)).
-
स्ट्रिंग की लंबाई अंकों में होती है।
-
यदि संख्या 1 वापसी 1 है। अन्यथा संख्या से कम शेष संख्याओं के लिए लंबाई+ Total_digits(num-1) लौटाएं।
-
अंत में हम परिणाम के रूप में कुल अंक प्राप्त करेंगे।
कुशल दृष्टिकोण
इस दृष्टिकोण में, हम इस तर्क का उपयोग करेंगे कि N तक की प्रत्येक संख्या के लिए हम 10, 100, 1000 को N तक पार करेंगे। प्रत्येक 10i के लिए, अंकों की संख्या (num-i + 1) है।
-
एक संख्या को धनात्मक पूर्णांक के रूप में लें।
-
फंक्शन Total_digits(int num) संख्या लेता है और 1 से num के बीच की संख्याओं में अंक लौटाता है।
-
शुरुआत में कुल गिनती 0 के रूप में लें।
-
i=1 से i<=num को पार करें, प्रत्येक पुनरावृत्ति में i को 10 से बढ़ाएं और गिनने के लिए num-i+1 जोड़ें।
-
परिणामस्वरूप लूप के अंत में गिनती लौटाएं।
उदाहरण (बेवकूफ दृष्टिकोण)
#include <bits/stdc++.h> using namespace std; int total_digits(int num){ string str = to_string(num); int length = str.length(); if (num == 1){ return 1; } return length + total_digits(num - 1); } int main(){ int num = 20; cout<<"Count of total number of digits from 1 to n are: "<<total_digits(num); return 0; }
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -
Count of total number of digits from 1 to n are: 31
उदाहरण (कुशल दृष्टिकोण)
#include <bits/stdc++.h> using namespace std; int total_digits(int num){ int count = 0; for(int i = 1; i <= num; i *= 10){ count = count + (num - i + 1); } return count; } int main(){ int num = 20; cout<<"Count of total number of digits from 1 to n are: "<<total_digits(num); return 0; }
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -
Count of total number of digits from 1 to n are: 31