小白經典CNN論文復現系列(一):LeNet1989
阿新 • • 發佈:2020-12-29
7-28 猴子選大王 (20分)
一群猴子要選新猴王。新猴王的選擇方法是:讓N只候選猴子圍成一圈,從某位置起順序編號為1~N號。從第1號開始報數,每輪從1報到3,凡報到3的猴子即退出圈子,接著又從緊鄰的下一隻猴子開始同樣的報數。如此不斷迴圈,最後剩下的一隻猴子就選為猴王。請問是原來第幾號猴子當選猴王?
輸入格式:
輸入在一行中給一個正整數N(≤1000)。
輸出格式:
在一行中輸出當選猴王的編號。
輸入樣例:
11
輸出樣例:
7
程式碼:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
scanf ("%d",&n);
int a[1000] = {0};
for(int i=0; i<n; i++)
a[i]=i+1;//將有效的猴子的位置安排大於0的數
int num=1;//開始判斷猴子的位置當為三就把 當前的位置的猴子的數字改為0
int n1= n;
while(n1!=1)
{
for(int i=0; i<n; i++)
{
if(a[i]!=0)
{
a[i]=num;
num++ ;
if(num==4)
num=1;
if(a[i]==3)
{
a[i]=0;
n1 --;
}
}
}
}
for(int i=0; i<n; i++)//輸出帶有大於1的數的猴
{
if(a[i]!=0)
printf("%d " ,i+1);
}
return 0;
}
本次的程式碼的調整了很久
錯誤的原因是沒有把個數n
,很計數器n1
分開好。