مساله:
یک اتاق انتظار با N صندلی در یک ردیف وجود دارد. صندلی ها به ترتیب متوالی از 1 تا N شماره گذاری می شوند. اولین صندلی نزدیکترین به ورودی (که خروجی نیز هست) می باشد.
به دلایلی افراد، صندلی را به روش زیر انتخاب می کنند:
- تا جایی که ممکن باشد مکانی دور از دیگران پیدا می کنند
- تا جایی که ممکن باشد جایی نزدیک به خروجی پیدا می کنند
همه صندلی ها قبل از اینکه نفر اول آنها را بگیرد باید اشغال شوند.
بنابراین برای 10 صندلی و 10 بیمار شبیه مورد زیر است:
Chairs | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|---|---|---|---|---|---|---|---|---|---|
Patients | 1 | 7 | 5 | 8 | 3 | 9 | 4 | 6 | 10 | 2 |
وظیفه شما این است که شماره صندلی آخرین بیمار را پیدا کنید.
ورودی N تعداد صندلی ها است که باید از ۲ بیشتر باشد. خروجی هم عددی است که آخرین صندلی که اشغال می شود را نشان می دهد.
There’s a waiting room with N chairs set in single row. Chairs are consecutively numbered from 1 to N. First is closest to the entrance (which is exit as well).
For some reason people choose a chair in the following way
Find a place as far from other people as possible
Find a place as close to exit as possible
All chairs must be occupied before the first person will be served
So it looks like this for 10 chairs and 10 patients
Chairs | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|---|---|---|---|---|---|---|---|---|---|
Patients | 1 | 7 | 5 | 8 | 3 | 9 | 4 | 6 | 10 | 2 |
Your task is to find last patient’s chair’s number.
Input – N – integer greater than 2 – number of chairs. Output should positive integer too – last patient’s chair’s number
Have fun 🙂
راه حل (Solution):
در کمال سادگی
public class Kata { public static int lastChair(int n) { return n-1; } }