मान लीजिए कि हमारे पास n तत्वों के साथ एक सरणी A है और दूसरी संख्या k है। कैंडीज के ढेर हैं। Ith पाइल में A[i] कैंडीज की संख्या होती है। हम दो सूचकांकों i और j (i !=j) पर ऑपरेशन कर सकते हैं, फिर A[i] में एक और A[i] कैंडी की संख्या जोड़ सकते हैं (A[i] कम नहीं किया जाएगा)। हम इस ऑपरेशन को कितनी भी बार कर सकते हैं, लेकिन दुर्भाग्य से अगर कुछ ढेर में k कैंडीज से अधिक सख्ती है तो हम ऑपरेशन नहीं कर सकते। हमें यह पता लगाना है कि हम इस ऑपरेशन को कितनी बार कर सकते हैं।
इसलिए, यदि इनपुट ए =[1, 2, 3] जैसा है; k =5, तो आउटपुट 5 होगा, क्योंकि हम i =0 ले सकते हैं और j =1 के लिए हम तीन बार प्रदर्शन कर सकते हैं और j =2 के लिए हम दो बार प्रदर्शन कर सकते हैं। तो कुल 5 बार।
कदम
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
ans := 0 n := size of A sort the array A for initialize i := 1, when i < n, update (increase i by 1), do: ans := ans + (k - A[i]) return ans
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
#include <bits/stdc++.h> using namespace std; int solve(vector<int> A, int k){ int ans = 0; int n = A.size(); sort(A.begin(), A.end()); for (int i = 1; i < n; i++){ ans += (k - A[i]) / A[0]; } return ans; } int main(){ vector<int> A = { 1, 2, 3 }; int k = 5; cout << solve(A, k) << endl; }
इनपुट
{ 1, 2, 3 }, 5
आउटपुट
5