1 条题解

  • 0
    @ 2025-3-12 0:14:34
    #include <bits/stdc++.h>
    using namespace std;
     
    int n, a[1000050], cnt, m;
     
    int main()
    {
    	cin >> n;
    	queue <int> q;
    	for(int i = 1; i <= n; i++) {
    		cin >> a[i]; 
    		q.push(i); //入队
    	}
    	m = a[1]; // 第一个要求的数其实就是a[1]
    	while (q.size() != 1) {
    		++cnt; // 报数 
    		int x = q.front();
    		q.pop();
    		if (cnt != m) q.push(x); // 若没到要求的数,则入队,继续报数 
    		else { // 同循环队列
    			cnt = 0;
    			m = a[q.front()]; // 出队,并更换m 
    		}
    	}
    	cout << q.front() << endl; 
    	return 0;
    }
    /*
    5
    1 2 3 4 5
    */ 
    
    • 1

    信息

    ID
    875
    时间
    1000ms
    内存
    256MiB
    难度
    6
    标签
    递交数
    8
    已通过
    5
    上传者