สมมติว่าเรามีอาร์เรย์ A ที่มี 3 องค์ประกอบ A[1] คือค่าเฉลี่ยเลขคณิตของสององค์ประกอบ A[0] และ A[3] ถ้า A[0] + A[2] =2 * A[1] ค่าเบี่ยงเบนค่าเฉลี่ยเลขคณิตของตัวเลขสามตัว d(A[0], A[1], A[2]) คือ|A[0] + A[2] - 2*A[1]| เราสามารถดำเนินการต่อไปนี้กี่ครั้งก็ได้:เลือกสองดัชนี i และ j จากดัชนี {0, 1, 2} เช่นนั้น i !=j จากนั้นเพิ่ม A[i] 1 และลด A[j] 1 เรา ต้องหาค่าต่ำสุดของส่วนเบี่ยงเบนค่าเฉลี่ยเลขคณิต
ดังนั้น หากอินพุตเป็น A =[2, 2, 6] ผลลัพธ์จะเป็น 1 เพราะหากเราลด A[0] และเพิ่ม A[1] อาร์เรย์จะเป็น [1, 3, 6] ดังนั้นค่าเบี่ยงเบนเฉลี่ยจะเป็น |1 + 6 - 2 * 3| =1.
ขั้นตอน
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
a :=A[0]b :=A[1]c :=A[2]คืนค่าขั้นต่ำ 1 และ (((a + c - 2 * b) mod 3 + 3) mod 3)ก่อน>ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น−
#includeใช้เนมสเปซ std;int แก้ปัญหา(vector A){ int a =A[0]; int b =A[1]; int c =A[2]; คืนค่า min(1, ((a + c - 2 * b) % 3 + 3) % 3);}int main(){ vector A ={ 2, 2, 6 }; ศาล <<แก้ (A) < อินพุต
{ 2, 2, 6 }ผลลัพธ์
1