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

C++ . में चार भाजक


मान लीजिए कि हमारे पास एक पूर्णांक सरणी संख्या है, हमें उस सरणी में पूर्णांकों के भाजक का योग ज्ञात करना होगा जिसमें ठीक चार भाजक हों। तो अगर सरणी में ऐसा कोई पूर्णांक नहीं है, तो 0 लौटाएं। उदाहरण के लिए, यदि इनपुट [21, 4, 7] है, तो आउटपुट 32 होगा, क्योंकि 21 में चार भाजक हैं 1, 3, 7, 21, 4 में तीन भाजक हैं 1, 2, 4, और 7 में दो भाजक 1 और 7 हैं। उत्तर केवल 21 के भाजक का योग है।

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

  • ओके () नामक एक विधि को परिभाषित करें, यह x को इनपुट के रूप में लेगा

  • रिट:=1 + एक्स, सीएनटी:=2

  • i के लिए :=2, i^2 <=x, i को 1 से बढ़ाएँ

    • यदि x, i से विभाज्य है

      • रिट को i से बढ़ाएँ, cnt को 1 से बढ़ाएँ

      • अगर मैं x/i नहीं हूं, तो cnt को 1 से बढ़ाएं:=ret + (x/i)

  • रिटर्न रिट, अगर सीएनटी 4 है, अन्यथा 0 लौटाएं

  • मुख्य विधि से

  • ret :=0, n :=अंकों का आकार

  • मेरे लिए 0 से n - 1 की सीमा में

    • रिट:=रिट + ओके (अंक [i])

  • वापसी रिट

उदाहरण (C++)

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

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   int ok(int x){
      int ret = 1 + x;;
      int cnt = 2;
      for(int i = 2; i * i <= x; i++){
         if(x % i == 0){
            ret += (i);
            cnt++;
            if(i != x / i){
               cnt++;
               ret += (x / i);
            }
         }
      }
      return cnt == 4 ? ret : 0;
   }
   int sumFourDivisors(vector<int>& nums) {
      int ret = 0;
      int n = nums.size();
      for(int i = 0; i < n; i++){
         ret += ok(nums[i]);
      }
      return ret;
   }
};
main(){
   vector<int> v = {21,4,7};
   Solution ob;
   cout << (ob.sumFourDivisors(v));
}

इनपुट

[21,4,7]

आउटपुट

32

  1. सी++ में जंप गेम वी

    मान लीजिए कि हमारे पास पूर्णांकों की एक सरणी है जिसे arr और एक पूर्णांक d कहा जाता है। एक चरण में हम इंडेक्स i से − . पर जा सकते हैं i + x जहां:i + x

  1. C++ में K अंक हटाएं

    मान लीजिए कि हमारे पास एक गैर-ऋणात्मक पूर्णांक संख्या है जिसे एक स्ट्रिंग के रूप में दर्शाया गया है, हमें संख्या से k अंक निकालना होगा ताकि नई संख्या सबसे छोटी संभव हो। तो अगर इनपुट “1432219” और k =3 जैसा है, तो परिणाम “1219” होगा। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - स्टैक सेंट को पर

  1. C++ में निकटतम भाजक

    मान लीजिए कि हमारे पास एक पूर्णांक संख्या है, हमें निरपेक्ष अंतर में निकटतम दो पूर्णांक ज्ञात करने हैं जिनका गुणनफल num + 1 या num + 2 के बराबर है। हमें दोनों पूर्णांकों को किसी भी क्रम में खोजना होगा। तो यदि इनपुट 8 है, तो आउटपुट [3, 3] होगा, संख्या + 1 के लिए, यह 9 होगा, निकटतम भाजक 3 और 3 हैं, सं