پاسخ سوال اتل متل توتوله + کوئرا

پاسخ سوال اتل متل توتوله + کوئرا
پاسخ سوال اتل متل توتوله + کوئرا

پاسخ سوال اتل متل توتوله + کوئرا

در این نوشته تمرین “اتل متل توتوله” که در وبسایت کوئرا موجود می باشد را برای شما کاربران عزیز حل کرده ایم.

 

در مورد سایت کوئرا بیشتر بخوانید…

 

تمرین اتل متل توتوله کوئرا + سی پلاس پلاس

صفا باشه!، صمیمیت باشه!

محمد و عرفان بعد از این که با روشی عجیب فهمیدند ذهن‌هایشان خیلی از هم فاصله دارد با روشی عجیب‌تر اقدام به رفع فاصله اذهانشان کردند!

آن‌ها به همراه  تا از دوستانشان بازی اتل‌متل‌توتوله را انجام می‌دهند. (توجه کنید که در مجموع n نفر هستند) حالا عرفان که به نظرش این بازی خیلی مسخره است از شما می‌خواهد برنامه‌ای بنویسید که نتیجه بازی را در هر مرحله بگوید.

به طور دقیق‌تر در هر مرحله از بازی یک شعر که  کلمه دارد خوانده می‌شود و بعد از گفتن هر کلمه، از یک پا به پای بعدی می‌رویم، در صورتی هم که به پای آخر برسیم، دوباره از اول شروع می‌کنیم. در آخر هر مرحله هم پایی که آخرین کلمه روی آن خوانده شده حذف می‌شود. توجه کنید که هر فرد دو پا دارد و اولین پا، پای نفر شماره ۱ است.

حال برنامه شما باید در  خط (تعداد مراحل بازی که طول می‌کشد تا فقط یک پا باقی بماند) روند جلو رفتن هر مرحله را چاپ کند (برای فهم بهتر مثال‌ها را ببینید). در آخر هم برنده بازی را مشخص کند.

توجه کنید در حالتی که در آخر هر دو پای یک نفر باقی بماند، نباید مرحله آخر را چاپ کنید و برنده مشخص می‌شود.

 

ورودی سوال اتل متل توتوله

به شما دو عدد و  داده می‌شود که نشان دهنده تعداد بازی کنان و تعداد کلمات شعر است (یعنی با شروع از پای اول  تا پا به جلو می‌رود و آن را ورمیچیند!)

 

خروجی سوال اتل متل توتوله

ابتدا در هر خط خروجی یک مرحله از بازی به صورت  عدد چاپ می‌شود که بیانگر ترتیب پاها در آن مرحله است. در آخرین خط از خروجی باید شمارهٔ بازیکن برنده طبق فرمتی که در ادامه مشاهده می‌کنید چاپ شود.

 

حل سوال اتل متل توتوله (به زبان برنامه نویسی سی پلاس پلاس)

#include <bits/stdc++.h>
using namespace std;
 
 
int main()
{
    int n, k;
    cin >> n >> k;
    vector<int> pa;
    for(int i=1; i<= 2*n; i++)
        pa.push_back((i+1)/2);
    
    int curr = 0, cu;
    while((int)pa.size() > 1)
    {
        cout << pa[curr] << " ";
        for(int i=1; i<k; i++)
        {
            cu = (curr+i)%(int)pa.size();
            cout << pa[cu] << " ";
        }
        curr = cu;
        cout << endl;
        pa.erase(pa.begin() + curr);
        if(curr == pa.size()) curr = 0, cu = 0;
        if((int)pa.size() == 2 && pa[0] == pa[1])
            break;
    }
    
    cout << "winner:" << pa[0] << endl;
    return 0;
}

 

 

منبع سوال : وبسایت کوئرا

 

اگر روش حل بهتری برای “تمرین اتل متل توتوله” دارید برای ما ارسال کنید تا با نام خودتان به اشتراک بگذاریم.

اگر سوال خاصی را مدنظر دارید در بخش نظرات برای ما ارسال کنید تا حل آن سوال را در الویت محتوای سایت بگذاریم.

موفق باشید.

برای امتیاز به این نوشته کلیک کنید!
[کل: 0 میانگین: 0]