题目 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;
}
相关推荐
Swift社区2 小时前
AI 的早期萌芽?用 Swift 演绎约翰·康威的「生命游戏」
游戏·蓝桥杯·swift
梁下轻语的秋缘2 小时前
每日c/c++题 备战蓝桥杯(P2240 【深基12.例1】部分背包问题)
c语言·c++·蓝桥杯
天才测试猿4 小时前
Selenium操作指南(全)
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
小天呐4 小时前
如何实现一个请求库?【面试场景题】
面试·职场和发展
进击的小白菜5 小时前
LeetCode 169:多数元素 - 摩尔投票法的精妙解法
算法·leetcode·职场和发展
花自向阳开10245 小时前
LeetCode hot100-9
算法·leetcode·职场和发展
姬公子5219 小时前
leetcode hot100刷题日记——33.二叉树的层序遍历
算法·leetcode·职场和发展
云泽80818 小时前
模块化设计,static和extern(面试题常见)
c语言·面试·职场和发展
Hygge-star18 小时前
【Java进阶】图像处理:从基础概念掌握实际操作
java·图像处理·人工智能·程序人生·职场和发展