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

1 से n . तक की सभी संख्याओं के अंकों का योग ज्ञात कीजिए


इस समस्या में, हमें 1 से n तक की सभी संख्याओं के अंकों का योग ज्ञात करना होता है। उदाहरण के लिए 54 के अंकों का योग 5 + 4 =9 होता है, इस प्रकार हमें सभी संख्याओं और उनके अंकों का योग ज्ञात करना होता है।

हम जानते हैं कि 10 d - 1 . हैं संख्याएँ उत्पन्न की जा सकती हैं, जिनके अंकों की संख्या d है। d अंकों की उन सभी संख्याओं का योग ज्ञात करने के लिए, हम एक पुनरावर्ती सूत्र का उपयोग कर सकते हैं।

योग(10 d - 1)=योग(10 d-1 - 1)*10+45*(10 d-1 )

इनपुट और आउटपुट

Input:
This algorithm takes the upper limit of the range, say it is 20.
Output:
Sum of digits in all numbers from 1 to n. Here the result is 102
. है

एल्गोरिदम

digitSumInRange(n)

इनपुट: सीमा की ऊपरी सीमा।

आउटपुट - श्रेणी (1-एन) में सभी संख्याओं के अंकों का योग।

Begin
   if n < 10, then
      return n(n+1)/2
   digit := number of digits in number
   d := digit – 1
   define place array of size digit
   place[0] := 0
   place[1] := 45

   for i := 2 to d, do
      place[i] := place[i-1]*10 + 45 * ceiling(10^(i-1))
      power := ceiling(10^d)
      msd := n/power
      res := msd*place[d] + (msd*(msd-1)/2)*power +
             msd*(1+n mod power) + digitSumInRange(n mod power)
      return res
   done
End

उदाहरण

#include<iostream>
#include<cmath>
using namespace std;

int digitSumInRange(int n) {
   if (n<10)
      return n*(n+1)/2;          //when one digit number find sum with formula
   int digit = log10(n)+1;       //number of digits in number
      int d = digit-1;           //decrease digit count by 1
   
   int *place = new int[d+1];    //create array to store sum upto 1 to 10^place[i]
   place[0] = 0;
   place[1] = 45;

   for (int i=2; i<=d; i++)
      place[i] = place[i-1]*10 + 45*ceil(pow(10,i-1));

   int power = ceil(pow(10, d));    //computing the power of 10
   int msd = n/power;               //find most significant digit
   return msd*place[d] + (msd*(msd-1)/2)*power +
      msd*(1+n%power) + digitSumInRange(n%power);    //recursively find the sum
}

int main() {
   int n;
   cout << "Enter upper limit of the range: ";
   cin >> n;
   cout << "Sum of digits in range (1 to " << n << ") is: " << digitSumInRange(n);
}

आउटपुट

Enter upper limit of the range: 20
Sum of digits in range (1 to 20) is: 102

  1. C++ में किसी सरणी के अंकों से बनने वाली दो संख्याओं का न्यूनतम योग

    विवरण अंकों की एक सरणी को देखते हुए जिसमें 0 से 9 तक के मान होते हैं। कार्य सरणी के अंकों से बनने वाली दो संख्याओं का न्यूनतम संभव योग ज्ञात करना है। कृपया ध्यान दें कि हमें दिए गए सरणी के सभी अंकों का उपयोग करना है उदाहरण यदि इनपुट ऐरे {7, 5, 1, 3, 2, 4} है तो न्यूनतम योग 382 है, क्योंकि हम दो नं

  1. जावा प्रोग्राम 1 से एन तक सभी प्राइम नंबर प्रदर्शित करने के लिए

    इस लेख में, हम समझेंगे कि जावा में 1 से N तक की सभी अभाज्य संख्याओं को कैसे प्रदर्शित किया जाए। 1 से अनंत तक सभी संभावित धनात्मक संख्याएँ प्राकृत संख्याएँ कहलाती हैं। अभाज्य संख्याएँ विशेष संख्याएँ होती हैं जिनके केवल दो गुणनखंड 1 और स्वयं होते हैं और इन्हें किसी अन्य संख्या से विभाजित नहीं किया जा

  1. पायथन - संख्याओं से रियर K अंक निकालें

    जब संख्याओं से पीछे के K अंक निकालने की आवश्यकता होती है, तो एक साधारण सूची समझ, मोडुलो ऑपरेटर और ** ऑपरेटर का उपयोग किया जाता है। नीचे उसी का एक प्रदर्शन है - उदाहरण my_list = [51645, 24567, 36743, 89452, 2122] print("The list is :") print(my_list) K = 3 print("The value of K is &