试题 算法训练 唯一的啥子ALGO-973
資源限制
時間限制:1.0s 內存限制:256.0MB
問題描述
腿錚找2255有點事,但2255太丑了,所以腿錚不知道他的長相。正愁不知道到如何找他的時候,他突然看見計33班圍成了一個圈在領微積分試卷。計33班有n個人,其中班長編號為0,其余同學依次按順時針方向編號。
只聽見計33小導說“x號同學順時針方向往后數(shù)的第k個的神犇出列(不包括x號同學),領取滿分試卷!”。剩下的人繼續(xù)圍成一個小圈。這樣一個過程持續(xù)了n-1次,那么顯然,最后只剩下了一個人。眾所周知,2255是個大傻子,門門掛科,不符合滿分試卷這一前提條件。通過這樣一個過程,腿錚終于找到了2255并血虐了他。
求2255的編號是多少。
輸入格式
第一行一個n,表示計33班的人數(shù)。
接下來n-1行,表示小導說話中的x和k。
輸出格式
一個數(shù)字,表示2255的編號。
樣例輸入
3
1 1
0 1
樣例輸出
0
數(shù)據(jù)規(guī)模和約定
前90%數(shù)據(jù)保證n<=10^4.
前100%數(shù)據(jù)保證n<=10^6,1<=k<min(當時圈中人數(shù),1000)
有被內涵到,我承認我就是。
思路:由于1<=k<min(當時圈中人數(shù),1000),所以輸入的第n-1行的x就是剩下的那個人。
(這題for循環(huán)不能用cin輸入,會超時)輸入就花了這么長時間!!!(關鍵字那里的鏈表就是唬人!!!!)
#include<iostream> using namespace std;int main(){int n;cin>>n;int x,k;for(int i=0;i<n-1;i++){scanf("%d%d", &x,&k);}cout<<x<<endl;return 0; }?還看到另一種解法
剛開始一直不明白for循環(huán)那里,直到……
但是這種解法循環(huán)了和沒循環(huán)一樣,調用了和沒調用一樣,總的來說就是輸出最后一個輸入的x
#include <iostream>using namespace std;const int N = 1000010;int L, ne[N], t;void del(int x, int k) {t = x;for (int cnt = 0; cnt == k % L; t = ne[t], cnt ++ );ne[t] = ne[ne[t]];L -- ; }int main() {int n;scanf("%d", &n);L = n;for (int i = 0; i < n; i ++ ){ne[i] = (i + 1) % n;}for (int i = 1; i < n; i ++ ){int x, k;scanf("%d%d", &x, &k);del(x,k);}cout << t;return 0; }總結
以上是生活随笔為你收集整理的试题 算法训练 唯一的啥子ALGO-973的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 暑期实训第二周周一周二总结
- 下一篇: 简单删除隐藏文件夹System Volu