题目 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;
}
相关推荐
墨染点香5 小时前
LeetCode 刷题【126. 单词接龙 II】
算法·leetcode·职场和发展
坚持编程的菜鸟12 小时前
LeetCode每日一题——三角形的最大周长
算法·leetcode·职场和发展
爱吃生蚝的于勒16 小时前
【Linux】深入理解进程(一)
java·linux·运维·服务器·数据结构·c++·蓝桥杯
爱coding的橙子16 小时前
每日算法刷题Day76:10.19:leetcode 二叉树12道题,用时3h
算法·leetcode·职场和发展
夏鹏今天学习了吗18 小时前
【LeetCode热题100(47/100)】路径总和 III
算法·leetcode·职场和发展
007php0071 天前
猿辅导Java面试真实经历与深度总结(二)
java·开发语言·python·计算机网络·面试·职场和发展·golang
缓风浪起1 天前
【力扣】2011. 执行操作后的变量值
算法·leetcode·职场和发展
电子_咸鱼1 天前
LeetCode——Hot 100【电话号码的字母组合】
数据结构·算法·leetcode·链表·职场和发展·贪心算法·深度优先
微笑尅乐1 天前
中点为根——力扣108.讲有序数组转换为二叉搜索树
算法·leetcode·职场和发展