简要题意:
求第 个质因子只包含 的数。规定 是第一个这样的数。
显然,本题可以用数组实现,用四个指针,将最小的往前进一发。
但是,有 和 这么弱的数据,我们还需要维护什么?
你发现,需要去重和排序。这不就是 的标本?
每次取出 第一个元素 ,并将 均重新插入集合,同时将答案指针往后移一位。
最后输出指针指向的值即可。
时间复杂度: .( 它弄出来了一个 )
实际得分: .
注:请注意判断 ,否则只能得到 .
#pragma GCC optimize(2)
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
inline int read(){char ch=getchar();int f=1;while(ch<'0' || ch>'9') {if(ch=='-') f=-f; ch=getchar();}
int x=0;while(ch>='0' && ch<='9') x=(x<<3)+(x<<1)+ch-'0',ch=getchar();return x*f;}
int main(){
int n=read(); set<ll> s;
if(!n) {puts("0");return 0;}
s.insert(1); set<ll>::iterator i=s.begin();
n--; //我们去掉1
while(n--) {
ll x=*i; //集合中第 i 小的
s.insert(x*2); s.insert(x*3);
s.insert(x*5); s.insert(x*7);
i++; //指针后移
} printf("%lld\n",*i);
return 0;
}