ধরুন আমাদের একটি অ্যারে আছে n উপাদান সহ এবং আরেকটি সংখ্যা k। ক্যান্ডির n গাদা আছে। ith পাইলে A[i] সংখ্যক ক্যান্ডি আছে। আমরা দুটি সূচক এবং j (i !=j) এর উপর অপারেশন করতে পারি, তারপর A[i] তে আরেকটি A[i] সংখ্যক ক্যান্ডি যোগ করতে পারি (A[i] কমানো হবে না)। আমরা যেকোন সংখ্যক বার এই অপারেশনটি করতে পারি, কিন্তু দুর্ভাগ্যবশত যদি কিছু স্তূপে k ক্যান্ডির চেয়ে বেশি কঠোরভাবে থাকে তবে আমরা আর অপারেশন করতে পারি না। আমরা এই অপারেশনটি কতবার করতে পারি তা আমাদের খুঁজে বের করতে হবে৷
সুতরাং, যদি ইনপুটটি A =[1, 2, 3] এর মত হয়; k =5, তাহলে আউটপুট 5 হবে, কারণ আমরা i =0 নিতে পারি এবং j =1 এর জন্য আমরা তিনবার পারফর্ম করতে পারি এবং j =2 এর জন্য আমরা দুইবার পারফর্ম করতে পারি। তাই মোট ৫ বার।
পদক্ষেপ
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
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