用下面的方法模擬,最開始開50000的鏈表跑了187ms,真是相當的慚愧呀。後改用35000的鏈表跑了109ms。最後改用c的輸入輸出(也就是下面放出的代碼)跑了78ms,其實自己寫鏈表會跑的更快。不過個人比較懶,加上已經0點了,78ms就78ms吧 = =~~~
順道一提,我這個代碼加上空行什麼的共737B,不過statistic第一頁大多都是10000+B的代碼,這神馬情況 = =||
呃,剛才在百度知道,看到一個這個題的解題代碼,感覺方法挺好的,
我的ac代碼:
[cpp]
#include <iostream>
#include <cstdio>
#include <list>
#include <iterator>
#include <algorithm>
using namespace std;
int main() {
list<int> l;
list<int>::iterator pos = l.begin();
int lucky[3001];
int i(2);
for ( ; i != 35000; ++i)
l.push_back(i);
for ( i = 0; i < 3001; ++i ) {
lucky[i] = l.front();
int key = lucky[i];
pos = l.begin();
while (pos != l.end()) {
pos = l.erase(pos);
int k = key - 1;
while (k--) {
if(pos == l.end()) break;
++pos;
}
}
}
int n;
while (scanf("%d", &n), n){
printf("%d\n", lucky[n - 1]);
}
}