ในปัญหานี้ เราได้รับจำนวนเต็มสองตัว N และ M มีวงกลมและมีคน N คนยืนบนมัน M แทนตำแหน่งของคน งานของเราคือพิมพ์ตำแหน่งของคนตรงข้ามกับ M
มาดูตัวอย่างเพื่อเข้าใจปัญหา:
Input - N = 6, M = 3
Output - 6
Explanation -

เพื่อแก้ปัญหานี้ จะมีสองกรณี หนึ่งถ้าตำแหน่งมากกว่าครึ่งหนึ่งของตำแหน่ง (ครึ่งหลัง) ตำแหน่งตรงข้ามจะเป็นครึ่งแรก และในทางกลับกัน
มาสร้างสูตรสำหรับสิ่งนี้ทางคณิตศาสตร์:
กรณีที่ 1 - หาก m > n/2 ตำแหน่งของคนตรงข้ามคือ m - (n/2)
กรณีที่ 2 - หาก m <= n/2 ตำแหน่งของคนตรงข้ามคือ m + (n/2)
ตัวอย่าง
โปรแกรมแสดงการประกอบโซลูชันของเรา:
#include <iostream>
using namespace std;
void printOppositePosition(int n, int m) {
int pos;
if (m > (n / 2))
pos = (m - (n / 2));
else
pos = (m + (n / 2));
cout << pos;
}
int main() {
int N = 8, M = 4;
cout << "The position of person opposite to person at position " << M << " when " << N << " people are standing in a circle is ";
printOppositePosition(N, M);
return 0;
}
ผลลัพธ์
The position of person opposite to person at position 4 when 8 people are standing in a circle is 8