《CF912E Prime Gift》

题目描述

Opposite to Grisha's nice behavior, Oleg, though he has an entire year at his disposal, didn't manage to learn how to solve number theory problems in the past year. That's why instead of Ded Moroz he was visited by his teammate Andrew, who solemnly presented him with a set of n distinct prime numbers alongside with a simple task: Oleg is to find the k -th smallest integer, such that all its prime divisors are in this set.

输入格式

The first line contains a single integer n ( 1<=n<=16 ).

The next line lists n distinct prime numbers p1​,p2​,...,pn​ ( 2<=pi​<=100 ) in ascending order.

The last line gives a single integer k ( 1<=k ). It is guaranteed that the k -th smallest integer such that all its prime divisors are in this set does not exceed 1018 .

输出格式

Print a single line featuring the k -th smallest integer. It's guaranteed that the answer doesn't exceed 1018 .

隐藏翻译

题意翻译

给你 n 个互不相同的素数 p1​,p2​,⋯,pn​,它们组成一个集合 P。

请你求出第 k 小的正整数,满足:

  • 该数字的所有素因子 ∈P

1≤n≤16,2≤pi​≤100, 保证答案不超过 1018。

输入输出样例

输入 #1复制

复制代码
3
2 3 5
7

输出 #1复制

复制代码
8

输入 #2复制

复制代码
5
3 7 11 13 31
17

输出 #2复制

复制代码
93

说明/提示

The list of numbers with all prime divisors inside 2,3,5 begins as follows:

(1,2,3,4,5,6,8,...)

The seventh number in this list ( 1 -indexed) is eight.

代码实现:

#include <iostream>

#include <queue>

#include <set>

#include <vector>

using namespace std;

int main() {

int n, k;

cin >> n;

vector<long long> primes(n);

for (int i = 0; i < n; i++) {

cin >> primesi;

}

cin >> k;

priority_queue<long long, vector<long long>, greater<long long> > pq;

set<long long> generated;

pq.push(1);

generated.insert(1);

for (int i = 0; i < k; i++) {

long long current = pq.top();

pq.pop();

if (i == k - 1) {

cout << current << endl;

return 0;

}

// 使用迭代器遍历primes

for (vector<long long>::iterator it = primes.begin(); it != primes.end(); ++it) {

long long p = *it;

long long nextNum = current * p;

if (nextNum / p == current && generated.find(nextNum) == generated.end()) {

pq.push(nextNum);

generated.insert(nextNum);

}

}

}

return 0;

}

相关推荐
youngerwang1 小时前
【从搬运工到协处理器:网卡芯片架构、算法、验证与边缘演进深度剖析】
网络·算法·架构·芯片
KaMeidebaby1 小时前
卡梅德生物技术快报|纯化重组蛋白实操详解
人工智能·python·tcp/ip·算法·机器学习
手写码匠2 小时前
从零实现 Prompt 工程引擎:结构化提示、自动优化与多轮自省体系
人工智能·深度学习·算法·aigc
无限码力3 小时前
阿里算法岗 0530笔试真题 - 多约束条件下的元素匹配统计
算法·阿里笔试真题·阿里机试真题·阿里算法岗笔试
lqqjuly3 小时前
MLA — 多头潜在注意力深度解析
深度学习·神经网络·算法
吴可可1233 小时前
SolidWorks草图转三维DWG技巧
算法
redaijufeng4 小时前
C++雾中风景7:闭包
c++·算法·风景
小欣加油4 小时前
leetcode287寻找重复数
数据结构·c++·算法·leetcode
尽兴-5 小时前
2.1 向量基础:Embedding、余弦相似度、欧氏距离、向量检索
算法·embedding·欧氏距离·向量检索·余弦相似度
Black蜡笔小新5 小时前
自动化AI算法训练服务器DLTM训推一体工作站赋能多行业智能化升级
人工智能·算法·自动化