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

C++ में फैक्टोरियल जीरो फंक्शन का प्रीइमेज साइज

मान लीजिए कि हमारे पास एक फ़ंक्शन f(x) है, यह x के फ़ैक्टोरियल के अंत में शून्यों की संख्या लौटाएगा। तो f(3) =0 के लिए क्योंकि 3! =6 के अंत में कोई शून्य नहीं है, जबकि f(11) =2 क्योंकि 11! =39916800 के अंत में 2 शून्य हैं। अब जब हमारे पास K है, तो हमें यह पता लगाना होगा कि कितने गैर-ऋणात्मक पूर्णांक x में यह गुण है कि f(x) =K.

तो अगर इनपुट K =2 जैसा है, तो उत्तर 5 होगा।

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

  • एक फ़ंक्शन को परिभाषित करें ठीक (), इसमें x लगेगा,
  • रिट:=0
  • इनिशियलाइज़ i :=5 के लिए, जब i <=x, अपडेट i :=i * 5, करें -
    • रिट:=रिट + एक्स / आई
  • रिटर्न रिटर्न
  • मुख्य विधि से, निम्न कार्य करें -
  • यदि K, 0 के समान है, तो −
    • 5 वापसी
  • निम्न:=1, उच्च:=के * 5
  • कम <उच्च होने पर, −
      . करें
    • मध्य :=निम्न + (उच्च-निम्न) /2
    • x :=ठीक (मध्य)
    • यदि x
    • निम्न :=मध्य + 1
  • अन्यथा
    • उच्च :=मध्य
  • वापसी (यदि ठीक (कम) K के समान है, तो 5, अन्यथा 0)
  • आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

    उदाहरण

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long int lli;
    class Solution {
    public:
       lli ok(lli x){
          int ret = 0;
          for(lli i = 5; i <= x; i *= 5){
             ret += x / i;
          }
          return ret;
       }
       int preimageSizeFZF(int K) {
          if(K == 0) return 5;
          lli low = 1;
          lli high = (lli)K * 5;
          while(low < high){
             lli mid = low + (high - low) / 2;
             lli x = ok(mid);
             if(x < K){
                low = mid + 1;
             }else high = mid;
          }
          return ok(low) == K ? 5 : 0;
       }
    };
    main(){
       Solution ob;
       cout << (ob.preimageSizeFZF(2));
    }

    इनपुट

    2

    आउटपुट

    5

    1. सी ++ में लॉग () फ़ंक्शन

      C/C++ लाइब्रेरी फ़ंक्शन डबल लॉग (डबल x) x का प्राकृतिक लघुगणक (बेसेलोगैरिथम) देता है। लॉग () फ़ंक्शन के लिए घोषणा निम्नलिखित है। double log(double x) पैरामीटर एक फ़्लोटिंग पॉइंट मान है। और यह फ़ंक्शन x का प्राकृतिक लघुगणक लौटाता है। उदाहरण #include <iostream> #include <cmath> using name

    1. सी ++ में किसी फ़ंक्शन में सरणी पैरामीटर का आकार कैसे मुद्रित करें?

      डेटा प्रकार का आकार sizeof() का उपयोग करके प्राप्त किया जा सकता है। एक प्रोग्राम जो C++ में किसी फ़ंक्शन में सरणी पैरामीटर के मुद्रण को प्रदर्शित करता है, वह निम्नानुसार दिया गया है। उदाहरण #include <iostream> using namespace std; int func(int a[]) {    cout << "Size: &quo

    1. सी ++ में स्वैप () फ़ंक्शन

      स्वैप () फ़ंक्शन का उपयोग दो नंबरों को स्वैप करने के लिए किया जाता है। इस फ़ंक्शन का उपयोग करके, आपको दो नंबरों को स्वैप करने के लिए किसी तीसरे चर की आवश्यकता नहीं है। यहाँ C++ भाषा में स्वैप () का सिंटैक्स दिया गया है, void swap(int variable_name1, int variable_name2); यदि हम वेरिएबल को मान असाइन