CF2104D.Array and GCD
普及/提高-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给定一个大小为 n 的整数数组 a。
你可以执行以下操作任意次数(包括零次):
- 支付 1 枚硬币并将数组中的任意一个元素增加 1(执行此操作时你至少需要有 1 枚硬币);
- 获得 1 枚硬币并将数组中的任意一个元素减少 1。
我们称一个数组是理想的,当且仅当满足以下两个条件:
- 数组中的每个元素都至少为 2;
- 对于任意两个不同的下标 i 和 j(1≤i,j≤n;i=j),ai 和 aj 的最大公约数(GCD)等于 1。如果数组元素少于 2 个,则此条件自动满足。
我们称一个数组是美丽的,如果可以通过上述操作将其转换为理想数组,且初始时你没有硬币。如果数组已经是理想的,那么它也是美丽的。
给定的数组不一定是美丽或理想的。你可以从中删除任意数量的元素(包括删除整个数组或不删除任何元素)。你的任务是计算为了使数组变得美丽,最少需要删除多少个元素(可以是零个)。
输入格式
第一行包含一个整数 t(1≤t≤104)——测试用例的数量。
每个测试用例的第一行包含一个整数 n(1≤n≤4⋅105)。
第二行包含 n 个整数 a1,a2,…,an(2≤ai≤109)。
输入数据的额外约束:所有测试用例的 n 之和不超过 4⋅105。
输出格式
对于每个测试用例,输出一个整数——为了使数组变得美丽,最少需要删除的元素数量(可以是零个)。
输入输出样例
输入#1
5 3 5 5 5 4 2 3 2 4 1 3 3 2 100 2 5 2 4 2 11 2
输出#1
0 2 0 0 1
说明/提示
在第一个样例中,你不需要删除任何元素,因为数组已经是美丽的。可以通过以下操作将其转换为理想数组:[5,5,5]→[4,5,5]→[4,4,5]→[4,3,5](最终你会拥有 3 枚硬币)。
在第二个样例中,你需要删除 2 个元素才能使数组变得美丽。如果保留元素 [2,3] 并删除其他元素,那么给定的数组已经是理想的(因此也是美丽的)。
在第三个样例中,你不需要删除任何元素,因为数组已经是理想的(因此也是美丽的)。
在第四个样例中,数组是美丽的。可以通过以下操作将其转换为理想数组:[2,100,2]→[2,99,2]→[2,99,3]→[2,98,3]→[2,97,3](最终你会拥有 2 枚硬币)。
翻译由 DeepSeek V3 完成
输入解题思路,AI测评打分。不知道怎么写?