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

C++ में दिए गए अंकों और अंकों के योग के साथ सबसे बड़ी संख्या ज्ञात कीजिए

इस समस्या में, हमें दो पूर्णांक मान दिए गए हैं, N एक संख्या के अंकों की संख्या को दर्शाता है और योग संख्या के अंकों के योग को दर्शाता है। हमारा काम है दिए गए अंकों की संख्या और अंकों के योग के साथ सबसे बड़ी संख्या का पता लगाना

समस्या को समझने के लिए एक उदाहरण लेते हैं,

Input : N = 3, sum = 15
Output : 960

समाधान दृष्टिकोण

समस्या को हल करने का एक सरल तरीका सभी एन अंकों की संख्याओं को सबसे बड़ी से सबसे छोटी तक ले जाना है। अंक योग संख्याएं खोजें, यदि यह योग के बराबर है तो संख्या लौटाएं।

उदाहरण

हमारे समाधान की कार्यप्रणाली को दर्शाने के लिए कार्यक्रम

#include <iostream>
using namespace std;
int digitSum(int n){
   int sum = 0; 
   while(n){
      sum += n%10; 
      n = n/10;
   }
   return sum;
}
int findLargestNumWithSum(int N, int sum){
   if (sum == 0){
      if(N == 1)
         return -1;
      else
         return -1;
   }
   if (sum > 9*N){
      return -1;
   }
   int num = 1;
   for(int i = 0; i < N; i++) 
      num *= 10;
   while(1){
      if(digitSum(num) == sum){
         return num;
      }
      num -- ;
      if(num == 0)
         return -1;
   }
}
int main(){
   int sum = 25, N = 3;
   cout<<"The largest "<<N<<" digit number with sum "<<sum<<" is "<< findLargestNumWithSum(N, sum);
   return 0;
}

आउटपुट

The largest 3 digit number with sum 25 is 997

समस्या को हल करने का एक अन्य तरीका लालची दृष्टिकोण का उपयोग करना है। हम इसे MSB से शुरू करके, योग से उच्चतम संभव संख्या रखकर और योग से घटाकर करेंगे।

हम इस चरण को N बार निष्पादित करेंगे, हमें आवश्यक संख्या प्राप्त होगी। इसलिए, यदि योग 9 से अधिक है, तो 9 को वर्तमान अंक पर रखें, यदि यह 9 से कम है, तो योग को वर्तमान अंक में रखें। यह प्रक्रिया MSB से LSB तक के सभी अंकों के अंक रखने के लिए करें।

उदाहरण

हमारे समाधान की कार्यप्रणाली को दर्शाने के लिए कार्यक्रम

#include <iostream>
using namespace std;
int findLargestNumWithSum(int N, int sum){
   if (sum == 0){
      if(N == 1)
         return -1;
      else
         return -1;
   }
   if (sum > 9*N){
      return -1;
   }
   int num = 0;
   for (int i = 0; i < N; i++){
      if (sum >= 9){
         num += 9;
         sum -= 9;
         if(i < (N - 1)){
            num *= 10;
         }
      }
      else{
         num += sum;
         sum = 0;
         if( i < (N - 1)) 
             num *= 10;
      }
   }
   return num;
}
int main(){
   int sum = 25,
   N = 3;
   cout<<"The largest "<<N<<" digit number with sum "<<sum<<" is "<<findLargestNumWithSum(N, sum);
   return 0;
}

आउटपुट

The largest 3 digit number with sum 25 is 997

  1. ऐसी संख्या x ज्ञात कीजिए कि C++ का प्रयोग करते हुए x और उसके अंकों का योग दिए गए n के बराबर हो।

    यहां हम एक समस्या देखेंगे, जहां हम एक संख्या n लेते हैं, हमें एक और मान x ज्ञात करना होता है, जैसे कि x का x + अंकों का योग दी गई संख्या n के समान हो। मान लीजिए n का मान 21 है। यह प्रोग्राम एक संख्या x =15, 15 + अंकों का योग 15, यानी 15 + 1 + 5 =21 =n के रूप में लौटाएगा। इस समस्या को हल करने के लिए

  1. ऐसी संख्या x ज्ञात कीजिए कि C++ में x और उसके अंकों का योग दिए गए n के बराबर हो

    यहां हम एक समस्या देखेंगे, जहां हम एक संख्या n लेते हैं, हमें एक और मान x ज्ञात करना होता है, जैसे कि x का x + अंकों का योग दी गई संख्या n के समान हो। मान लीजिए n का मान 21 है। यह प्रोग्राम एक संख्या x =15, 15 + अंकों का योग 15, यानी 15 + 1 + 5 =21 =n के रूप में लौटाएगा। इस समस्या को हल करने के लिए

  1. सी ++ प्रोग्राम किसी दिए गए नंबर के अंकों का योग करने के लिए

    C++ भाषा में अंकों के योग की गणना करने के लिए यहां एक उदाहरण दिया गया है, उदाहरण #include<iostream> using namespace std; int main() {    int x, s = 0;    cout << "Enter the number : ";    cin >> x;    while (x != 0) {