編號為1、2、3、...、N的N個人按順時針方向圍坐一圈,每人持有一個密碼(正整數)。從指定編號為1的人開始,他的密碼為M的初始值,按順時針方向從1號自己開始順序報數,報到指定數M時停止報數,報M的人出列,并將他的密碼作為新的M值,從他在順時針方向的下一個人開始,重新從1報數,報到M的人出列;出列人的密碼作為下一輪報數的值。依此類推,直至所有的人全部出列為止。請設計一個程序求出出列的順序,人數N及每個人的密碼值從鍵盤輸入。
要求:用二維數組完成(不得使用結構體)。
輸入格式:
輸入2行。
第1行為一個正正數N(2≤N≤30),表示參與游戲的人數。
第2行,N個正整數,表示每個人的密碼M(1≤M≤10)。
輸出格式:
按出列順序依次輸出所有游戲者的編號,用空格隔開。
輸入樣例:
在這里給出一組輸入。例如:
4
2 3 1 2
輸出樣例:
在這里給出相應的輸出。例如:
2 1 4 3
代碼長度限制
16 KB
時間限制
400 ms
內存限制
64 MB
棧限制
8192 KB
//#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
//#include<iostream>
//using namespace std;
#define MAX 100000000
int a[MAX] = { 0 };
int b[MAX] = { 0 };
int main()
{int N;int cnt = 0, i = 0, k = 0;scanf("%d", &N);for (int i = 1; i <= N; i++){scanf("%d", &b[i]);}int bu = 1;while (cnt != N){i++;if (i > N) i = 1;if (a[i] == 0){k++;if (k == b[bu]){a[i] = 1;cnt++;printf("%d ", i);k = 0;bu = i;}}}return 0;
}