रेंज वेरिएबल के रूप में दो संख्याएं 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