Assistance Required HDU - 1216 (模擬+連結串列)
阿新 • • 發佈:2019-01-14
複習一些, 對於常用刪除和插入操作的資料結構要用list, 對於遍歷和查詢更多的資料結構要用集合, 這道題很顯然要用list
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <string>
#include <stdlib.h>
#include <vector>
#include <queue>
#include <cmath>
#include <map>
#include <list>
using namespace std;
#define ms(x, n) memset(x,n,sizeof(x));
typedef long long LL;
const LL maxn = 50000;
int n, ans[3010];
list<int> num(maxn);
void init()
{
//初始化號碼2...n
int i = 2, j = 1;
list<int>::iterator it;
for(it = num.begin(); it != num. end(); it++)
*it = i++;
it = num.begin();
while (it != num.end()){
i = num.front();
ans[j++] = i;
num.pop_front();
int k = 1;
for(it = num.begin(); it != num.end(); it++, k++){
if(k % i == 0)
num.erase(it--);
}
it = num.begin();
}
}
int main()
{
init();
while(cin >> n && n!=0)
cout << ans[n] << endl;
return 0;
}