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

C++ में गुणन तालिका में Kth सबसे छोटी संख्या

मान लीजिए हम एक गुणन सारणी के बारे में जानते हैं। लेकिन क्या हम गुणन सारणी से k-वीं सबसे छोटी संख्या जल्दी से ज्ञात कर सकते हैं? इसलिए यदि हमें m * n गुणन तालिका की लंबाई m और लंबाई n, और एक धनात्मक पूर्णांक k करना है, तो हमें इस तालिका में k-वीं सबसे छोटी संख्या ज्ञात करनी होगी।

तो अगर m =3 और n =3 और k 6 है, तो आउटपुट 4 होगा, ऐसा इसलिए है क्योंकि गुणन तालिका इस तरह है -


1 2 3
1 1 2 3
2 2 4 6
3 3 6 9

छठा सबसे छोटा तत्व 4 है [1,2,2,3,3,4,6,6,9]

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • एक फ़ंक्शन को परिभाषित करें ठीक (), इसमें m, n, x,
  • लगेगा
  • रिट:=0
  • इनिशियलाइज़ i :=1 के लिए, जब i <=n, अपडेट करें (i को 1 से बढ़ाएँ), −
      करें
    • अस्थायी:=न्यूनतम x / i और m
    • रिट:=रिट + अस्थायी
  • रिटर्न रिटर्न
  • मुख्य विधि से, निम्न कार्य करें -
  • ret:=-1, Low :=1, high:=m * n
  • कम <=उच्च होने पर, −
      . करें
    • मध्य :=निम्न + (उच्च-निम्न)/2
    • सीएनटी:=ठीक है(एम, एन, मिड)
    • यदि cnt>=k, तो −
      • उच्च :=मध्य - 1
      • सेवानिवृत्त:=मध्य
    • अन्यथा
      • निम्न :=मध्य + 1
  • रिटर्न रिटर्न

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

उदाहरण

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   int ok(int m, int n, int x){
      int ret = 0;
      for(int i = 1; i <= n; i++){
         int temp = min(x / i, m);
         ret += temp;
      }
      return ret;
   }
   int findKthNumber(int m, int n, int k) {
      int ret = -1;
      int low = 1;
      int high = m * n ;
      while(low <= high){
         int mid = low + (high - low)/ 2;
         int cnt = ok(m, n, mid);
         if(cnt >= k){
            high = mid - 1;
            ret = mid;
         }else low = mid + 1;
      }
      return ret;
   }
};
main(){
   Solution ob;
   cout << (ob.findKthNumber(3,3,6));
}

इनपुट

“2*”

आउटपुट

4

  1. सी ++ में तर्कों की परिवर्तनीय संख्या

    कभी-कभी, आप एक ऐसी स्थिति में आ सकते हैं, जब आप एक ऐसा फ़ंक्शन करना चाहते हैं, जो पैरामीटर की पूर्वनिर्धारित संख्या के बजाय तर्कों की चर संख्या, यानी पैरामीटर ले सकता है। सी/सी++ प्रोग्रामिंग भाषा इस स्थिति के लिए एक समाधान प्रदान करती है और आपको एक फ़ंक्शन को परिभाषित करने की अनुमति है जो आपकी आवश्

  1. C++ में CHAR_BIT

    CHAR_BIT चार में बिट्स की संख्या है। इसे C++ भाषा में “limits.h” हेडर फाइल में घोषित किया गया है। यह 8-बिट प्रति बाइट का होता है। यहाँ C++ भाषा में CHAR_BIT का एक उदाहरण दिया गया है, उदाहरण #include <bits/stdc++.h> using namespace std; int main() {    int x = 28;    int a

  1. गुणन तालिका उत्पन्न करने के लिए C++ प्रोग्राम

    गुणन सारणी का प्रयोग किसी भी संख्या के गुणन संक्रिया को परिभाषित करने के लिए किया जाता है। यह आम तौर पर आधार दस संख्याओं के साथ प्रारंभिक अंकगणितीय संचालन की नींव रखने के लिए प्रयोग किया जाता है। किसी भी संख्या की गुणन सारणी 10 तक लिखी जाती है। प्रत्येक पंक्ति में 1 से 10 तक की संख्या का गुणनफल प्र