题目 3314: 蓝桥杯2025年第十六届省赛真题-魔法科考试

题目 3314: 蓝桥杯2025年第十六届省赛真题-魔法科考试

时间限制: 3s 内存限制: 512MB 提交: 245 解决: 49

题目描述

小明正在参加魔法科的期末考试,考生需要根据给定的口诀组合出有效的 魔法。其中,老师给定了 n 个上半部分口诀 a1, a2, . . . , an 和 m 个下半部分口诀 b1, b2, . . . , bm,均用整数表示。完整的口诀包含一个上半部分口诀和一个下半部 分口诀,当选用两个口诀 ai 和 bj,将组合出完整口诀 S = ai + bj。

当 S 满足 S ≤ n + m 且 S 为质数时,魔法是有效的。魔法的种类只和 S 的 大小有关。如果每个上半部分口诀和每个下半部分口诀在不同的组合中可以重 复使用,小明想知道一共可能组合出多少种不同的有效魔法?

输入格式

输入共三行。

第一行为两个正整数 n, m。

第二行为 n 个由空格分开的正整数 a1, a2, . . . , an。

第三行为 m 个由空格分开的正整数 b1, b2, . . . , bm。

输出格式

输出共 1 行,一个整数表示答案。

样例输入复制

3 4

2 3 10

3 4 5 1

样例输出复制

3

提示

【样例说明】

可以组合出 3、5、7 这三个有效魔法。

【评测用例规模与约定】

对于 20% 的评测用例,n, m ≤ 200。

对于 60% 的评测用例,n, m ≤ 2000。

对于 100% 的评测用例,n, m ≤ 20000,ai , bi ≤ 20000。

1.分析

预处理出所有的质数并标记。

遇到和为质数并且在范围内取消标记并计数。

两个数组排序更好处理。

2.代码

cpp 复制代码
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
const int MAX = 1e5;
typedef long long LL;
int n,m,a[MAX],b[MAX],re[MAX],num;
bool check(int x) {
    if (x < 2) return false;
    for (int i = 2; i <= x / i; i++) {
        if (x % i == 0) return false;
    }
    return true;
}
int main() {
    for (int i = 2; i <= 40010; i++) {
        if (check(i)) re[i] = 1;
    }
    cin >> n >> m;
    for (int i = 0; i < n; i++) {
        cin >> a[i];
    }
    for (int i = 0; i < m; i++) {
        cin >> b[i];
    }
    sort(a, a + n);
    sort(b, b + m);
    for (int i = 0; i < n; i++) {
        for (int j = 0; a[i] + b[j] <= n+m&&j<m; j++) {
            if (re[a[i] + b[j]]==1) {
                re[a[i] + b[j]] = 0;
                num++;
            }
        }
    }
    cout << num << endl;
    return 0;
}
相关推荐
丰锋ff8 小时前
面试问题合集
面试·职场和发展
颜挺锐8 小时前
如何轻松通过性能测试之第四篇:性能测试项目怎么交付?一文讲透九步实施流程(附面试话术 + 实战清单)
面试·职场和发展
带多刺的玫瑰13 小时前
Leecode#15刷题之三数之和
算法·leetcode·职场和发展
shehuiyuelaiyuehao15 小时前
算法32,连续数组,前缀和+哈希表
算法·leetcode·职场和发展
YonyouHRSaaS16 小时前
AI面试工具怎么选型?2026年企业AI面试系统选型标准是什么?
人工智能·面试·职场和发展·ai面试·ai招聘
RisunJan17 小时前
产品经理面试知识点梳理
面试·职场和发展·产品经理
小欣加油18 小时前
Leetcode2058 找出临界点之间的最小和最大距离
数据结构·c++·算法·leetcode·职场和发展
测试199819 小时前
软件测试面试八股文【2026最新版】
自动化测试·软件测试·功能测试·测试工具·面试·职场和发展·测试用例
玖玥拾19 小时前
LeetCode 1 两数之和
算法·leetcode·职场和发展