मान लीजिए कि हमारे पास 3 तत्वों के साथ एक सरणी ए है। ए [1] दो तत्वों ए [0] और ए [3] का अंकगणितीय माध्य है यदि ए [0] + ए [2] =2 * ए [1]। तीन संख्याओं d(A[0], A[1], A[2]) का अंकगणित माध्य विचलन है|A[0] + A[2] - 2*A[1]|। हम निम्नलिखित संक्रियाओं को कितनी भी बार कर सकते हैं:सूचकांक {0, 1, 2} से दो अनुक्रमणिका i और j का चयन करें जैसे कि i !=j, फिर A[i] को 1 से बढ़ाएं और A[j] को 1 से घटाएं। अंकगणित माध्य विचलन का न्यूनतम मान ज्ञात करना है।
इसलिए, यदि इनपुट ए =[2, 2, 6] की तरह है, तो आउटपुट 1 होगा, क्योंकि अगर हम ए [0] घटाते हैं और ए [1] बढ़ाते हैं, तो सरणी [1, 3, 6] होगी, तो माध्य विचलन होगा |1 + 6 - 2 * 3| =1.
कदम
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
a := A[0] b := A[1] c := A[2] return minimum of 1 and (((a + c - 2 * b) mod 3 + 3) mod 3)
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें-
#include <bits/stdc++.h>
using namespace std;
int solve(vector<int> A)
{
int a = A[0];
int b = A[1];
int c = A[2];
return min(1, ((a + c - 2 * b) % 3 + 3) % 3);
}
int main()
{
vector<int> A = { 2, 2, 6 };
cout << solve(A) << endl;
} इनपुट
{ 2, 2, 6 } आउटपुट
1