بازی مرگ ( یاران حلقه ) در C/C++

بازی مرگ، یه بازی ساده ریاضی هست و به این صورت عمل می کنه که هر عدد میتونه عدد کناریشو حذف کنه. هدف بازی اینه که عدد خودتونو طوری بچینید که تا آخر حذف نشن.

مثال

فرض کنید که ۷ نفر دور حلقه ایستاده‌اند. در دور اول حلقه شماره های ۲و۴و۶ را منصرف می‌کند. سپس اعداد ۱و۳و۵و۷ باقی مانده‌اند که پس از حذف ۶ عدد ۷ اسکیپ می‌شود و سپس در دور بعد عدد ۱ و ۵ حذف می‌شوند. سپس عدد ۳ و نهایتا عدد ۷ باقی می‌ماند بنابراین فرودو باید در جایگاه ۷‌ام قرار گیرد تا سرزمین میانه نجات پیدا کند.

ورودی

 

ورودی تنها شامل یک خط است که در آن عدد طبیعی n آمده است.

بزرگ ترین مقدار n می تواند ۱۰۰۰۰۰۰ باشد.

 

خروجی

 

در یک خط شماره جایگاهی که فرودو باید قرار گیرد تا نهایتا منصرف نشود و تنها او باقی بماند را چاپ کنید.

 

ورودی نمونه ۱

 

۵

 

ورودی خروجی ۱

 

۳

 

ورودی نمونه ۲

 

۵۶

 

ورودی خروجی ۲

 

۴۹

 

کد :




#include 



int main(){
    int n;
    scanf("%d",&n);
    int Number[n];
    int i=0;
    for (int j = 1; j <=n ; ++j) {
        Number[j-1]=j;
    }
    int j=0;
    while(j!=n-1){
        while (Number[i]==0){
            if(i==n-1){
                i=-1;
            }
            ++i;

        }
        if(i==n-1){
            i=-1;
        }
        ++i;
        while(Number[i]==0){
            if(i==n-1){
                i=-1;
            }
            ++i;
        }
        Number[i]=0;
        j++;
    }
    i=0;
    while(Number[i]==0){
        ++i;
    }
    printf("%d",Number[i]);

}