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

श्रेणी में संख्याओं की गणना करें जैसे कि इसमें अंक और क्यू के साथ इसका उत्पाद सी ++ में असमान हैं

दिए गए दो नंबर रेंज वेरिएबल के रूप में शुरू और समाप्त होते हैं और इनपुट के रूप में एक पूर्णांक q। लक्ष्य एक सीमा के भीतर संख्याओं को इस तरह खोजना है कि संख्या और q के साथ उसके उत्पाद में कोई सामान्य अंक न हो।

यदि संख्या 5 है और q 3 है तो गुणनफल 15 होगा। 5 और 15 दोनों का एक सामान्य अंक 5 है।

यदि संख्या 2 है और q 5 है तो गुणनफल 10 होगा। 2 और 10 दोनों में कोई उभयनिष्ठ अंक नहीं है।

आइए उदाहरणों से समझते हैं।

उदाहरण के लिए

इनपुट - प्रारंभ =5, अंत =10, क्यू =2

आउटपुट - श्रेणी में संख्याओं की संख्या जैसे कि इसमें अंक और q के साथ इसका उत्पाद असमान हैं:5

स्पष्टीकरण - नंबर होंगे:

  • 5 (5 * 2 =10)
  • 6 (6 * 2 =12)
  • 7 (7 * 2 =14)
  • 8 (8 * 2 =16)
  • 9 (9 * 2 =18)

इनपुट - प्रारंभ =20, अंत =25, क्यू =5

आउटपुट - श्रेणी में संख्याओं की संख्या इस प्रकार है कि इसमें अंक और q के साथ इसका गुणनफल असमान हैं:2

स्पष्टीकरण - नंबर होंगे:

  • 22 ( 22 * ​​5 =110 )
  • 23 (23 * 5 =115)

नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है

इस दृष्टिकोण में हम शुरू से अंत तक घूमेंगे और प्रत्येक संख्या और उसके उत्पाद को q के साथ स्ट्रिंग में बदल देंगे। अब एक ऐरे एआर [26] बनाएं जो वर्तमान संख्या के वर्णों की संख्या को संग्रहीत करेगा। अब उत्पाद का ट्रैवर्स स्ट्रिंग (वर्तमान संख्या * q) और यदि उस स्ट्रिंग के किसी भी वर्ण का एआर [] में गैर-शून्य मान है तो यह सामान्य है इसलिए 0 लौटाएं। अन्यथा वापसी 1.

  • श्रेणी चर और एक मान q लें।
  • फ़ंक्शन चेक (int i, int q) एक संख्या i और q लेता है और 1 देता है यदि i और q के अंक असमान हैं या सामान्य नहीं हैं।
  • str =to_string(i) का उपयोग करके i को स्ट्रिंग में बदलें।
  • str_2 =to_string(temp) का उपयोग करके उत्पाद (temp=q*i) को स्टिंग में बदलें।
  • str के वर्णों की संख्या के लिए फ़्रीक्वेंसी सरणी arr[26] ={ 0 } लें।
  • arr[str[j] - '0']++ का उपयोग करके लूप के लिए ट्रैवर्स स्ट्र और अपडेट फ़्रीक्वेंसी का उपयोग करें।
  • एक लूप का उपयोग करके str_2 को पार करें और जांचें कि क्या कोई arr[str_2[j] - '0'] गैर-शून्य है, यदि हां तो यह सामान्य है। वापसी 0.
  • अन्यथा वापस लौटें 1.
  • फंक्शन असमान (int start, int end, int q) रेंज वेरिएबल और q लेता है और रेंज में संख्याओं की गिनती इस तरह देता है कि इसमें अंक और q के साथ इसका उत्पाद असमान है।
  • प्रारंभिक गणना 0 के रूप में लें।
  • आई-स्टार्ट से i=end तक फॉर लूप का उपयोग करके ट्रैवर्स नंबर।
  • चेक (i, q) का उपयोग करके पता लगाएं कि क्या संख्या i और q के साथ उसके उत्पाद में कोई अंक समान नहीं है। यदि हाँ तो वेतन वृद्धि की गणना करें।
  • अंत में परिणाम के रूप में वापसी की गणना करें।

उदाहरण

#include <bits/stdc++.h>
using namespace std;

int check(int i, int q) {
   string str = to_string(i);
   int length = str.size();
   int arr[26] = {
      0
   };

   int temp = i * q;
   string str_2 = to_string(temp);
   int length_2 = str_2.size();
   for (int j = 0; j < length; j++) {
      arr[str[j] - '0']++;
   }
   for (int j = 0; j < length_2; j++) {
      if (arr[str_2[j] - '0']) {
         return 0;
      }
   }
   return 1;
}

int unequal(int start, int end, int q) {
   int count = 0;

   for (int i = start; i <= end; i++) {
      if (check(i, q)) {
         count++;
      }
   }
   return count;
}
int main() {
   int start = 20, end = 40, q = 4;
   cout << "Count of numbers in range such that digits in it and it's product with q are unequal are: " << unequal(start, end, q);
   return 0;
}

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -

आउटपुट

Count of numbers in range such that digits in it and it's product with q are unequal are: 1

  1. ऐसे तत्वों की गणना करें जिनमें C++ में X से अधिक या उसके बराबर मान वाले बिल्कुल X तत्व हों

    हमें पूर्णांकों की एक सरणी दी गई है। लक्ष्य सरणी में तत्वों की संख्या का पता लगाना है जो निम्नलिखित शर्तों को पूरा करते हैं - प्रत्येक तत्व के लिए सरणी में मौजूद उससे अधिक या उसके बराबर संख्याओं की संख्या बिल्कुल इसके बराबर होनी चाहिए। स्वयं तत्व को छोड़कर। यदि तत्व X है तो सरणी में ठीक X संख्याएँ

  1. C++ में अद्वितीय अंकों के साथ संख्याएं गिनें

    मान लीजिए कि हमारे पास एक गैर-ऋणात्मक पूर्णांक n है। हमें सभी संख्याओं को अद्वितीय अंकों x के साथ गिनना है, जहां x 0 से 10^n की सीमा में है। इसलिए यदि संख्या n 2 है, तो परिणाम 91 होगा, क्योंकि हम 11, 22, 33, 44, 55, 66, 77, 88, 99 के बिना 0 से 100 तक की संख्याएँ खोजना चाहते हैं। इसे हल करने के लिए,

  1. C++ में बिटवाइज़ और नंबर रेंज की रेंज

    मान लीजिए कि हमारे पास एक रेंज [m, n] है जहां 0 <=m <=n <=2147483647. हमें बिटवाइज और इस रेंज की सभी संख्याओं को शामिल करना है। तो अगर रेंज [5, 7] है, तो परिणाम 4 होगा। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - मैं :=0 जबकि m, n नहीं है, तब एम:=एम/2, एन:=एन/2, मैं 1 से बढ़ाएँ म