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

C++ में रेंज में उन संख्याओं की गिनती जिनके अंक और q से गुणनफल के अंक असमान हैं


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

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

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

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

उदाहरण के लिए

इनपुट -  start = 5, end = 10, q = 2

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

व्याख्या - संख्याएं होंगी:

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

इनपुट -  start = 20, end = 25, q = 5

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

व्याख्या - संख्याएं होंगी:

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

नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण

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

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

उदाहरण

#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 संख्याएं हैं जो X से बड़ी या बराबर

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

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

  1. - C++ में संख्या रेंज का बिटवाइज़ AND

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