本文由编程笔记#小编为大家整理,主要介绍了1216Assistance Required 比较坑的模拟相关的知识,希望对你有一定的参考价值。
http://acm.hdu.edu.cn/showproblem.php?pid=1216
这道题比较坑你会以为这是一个简单的筛素数的问题,
实际上不是的。
它的题意是这样的。
第一个数是2,以步长为2开始筛,此时队列里还有。
第二个数是3,以步长为3开始筛,此时队列里还有。
第三个数是5,以步长为5开始筛,此时5后面的第5个数是 19 故19要筛。 19是素数也被筛走了,故根本不是求素数表。
#include
#include<iostream>
#include
using namespace std;
const int N&#61;1e4*4&#43;10;
bool a[N];
vector<int> ve;
void print()
{
for(int i&#61;2;i<&#61;35000;i&#43;&#43;)
{
if(!a[i])
{
ve.push_back(i);
int cnt&#61;0;
for(int j&#61;i&#43;1;j<&#61;35000;j&#43;&#43;)
{
if(!a[j]) cnt&#43;&#43;;
if(cnt&#61;&#61;i)
{
a[j]&#61;true;
cnt&#61;0;
}
}
}
}
}
int main(void)
{
print();
int n;
while(cin>>n,n!&#61;0)
{
cout<<ve[n-1]<<endl;
}
return 0;
}