由于排版问题直接贴链接了:题目直通车

思路:首先题目里面有一句非常重要的话:

保证对于一个数字,其在 bi中出现的次数不多于在ai中出现的次数。

根据这句话,我们可以得出:

1.在a中没有出现的数字b中一定没有出现。

2.在b中出现的数字a中一定出现。

看到这里,就能够大概想到解法,因为a中乘积一定整除b中乘积(如上两条)。我们在去除1后(任何数乘1还是任何数),如果m-n大于等于2,或者m=n时,剩下的乘积一定不是质数。
反之如果m-n等于1,并且多出来的数字是质数,那就是YES,否则全是NO。怎么找多出来的那一个数呢?有很多方法,不过我喜欢异或的方法。
讲一下异或的性质:

a^a=0;0异或任何数等于任何数,a^a^b=b,这个称为异或的自反性,自反性有很多应用,比如不使用中间变量交换两个数的值,给你一堆数字只有一个数字出现一次,其他全出现两次,比如1,4,2,3,3,1,2,将这些数字异或结果是4,我们可以利用这个性质找到多出来的那个数字。

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll re()
{char ch = getchar(); ll x = 0, f = 1;while(ch < '0' || ch > '9') {if(ch == '-') f = -1; ch = getchar();}while('0' <= ch && ch <= '9') {x = x * 10 + ch - '0'; ch = getchar();}return x * f;
}
bool judge(ll x)//判断是否是质数
{int i;if(!x || x == 1)//特判0和1return false;for(i = 2; 1LL * i * i <= x; i++)if(!(x%i))return false;return true;
}
int main()
{int i, n, m, t, s;ll x,y;t = re();while(t--){x = y = s = 0;n = re(); m = re();for(i = 1; i <= n+m; i++)//因为异或的性质,我们可以一次性读完并异或{y = re();if(y != 1)//注意!因为无论有多少个1,都是不影响结果的,所以在异或时要把1排除{i > n ? s--: s++;//显然(除去1后)只有当a里的数比b里的数多一个时才可能是质数,所以我们通过统计来判断x ^= y;//将所有数异或起来,如果满足上述“多一个”的条件,则异或完所剩下的必是没有被约分的数}}//判断是否满足上述“多一个”的条件,且这个剩余的数是否质数if(s == 1 && judge(x)) puts("YES");else puts("NO");}return 0;
}

P4752 Divided Prime相关推荐

  1. 洛谷P4752 Divided Prime(简单模拟) 题解

    题目来源: https://www.luogu.org/problemnew/show/P4752 题目描述: 题目描述 给定一个数字 AA ,这个 AA 由 a_1,a_2,\cdots,a_Na1 ...

  2. 洛谷 P4752 Divided Prime

    题目其实很简单,主要坑点是 数组中的 1 代码: #include<bits/stdc++.h> using namespace std;typedef long long ll; con ...

  3. 题解洛谷P4752 【Divided Prime】

    此题的感想:我个人感觉这道题绿的有点假..不过实际上是大佬们的程序我没看懂.这里想给大家普及一个新的思路. 算法: ①:我们知道,如果一个数的非1因数个数减去第二个数的非一因数个数>1的话,那么 ...

  4. 「LuoguP4752」牧 Divided Prime

    Description 给定一个数字 A,这个 A 由 a1,a2,⋯,aN相乘得到. 给定一个数字 B,这个 B 由 b1,b2,⋯,bM相乘得到. 如果 A/B 是一个质数,请输出YES,否则输出 ...

  5. 「LuoguP4752」牧 Divided Prime(判质数

    Description 给定一个数字 A,这个 A 由 a1,a2,⋯,aN相乘得到. 给定一个数字 B,这个 B 由 b1,b2,⋯,bM相乘得到. 如果 A/B 是一个质数,请输出YES,否则输出 ...

  6. 【堆栈应用一】一个数divided=几个最小质因数的乘积

    /******************************************堆栈:一个数divided几个质因数(质因数的乘积为N)***************************** ...

  7. hdu5594 ZYB's Prime

    hdu5594 ZYB's Prime Problem Description After getting 600 scores in NOIP,ZYB(ZJ−267) creates a probl ...

  8. hdu 5594 ZYB's Prime 最大流

    ZYB's Prime Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5 ...

  9. ccf 最优灌溉(prime模板)

    模板题 #include<bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f int lowcost[1010]; int ...

最新文章

  1. JSP与servlets的区别
  2. 如何在Ubuntu系统的顶部标题栏中增加CPU/内存/网速实时监控的小控件
  3. 使用Gradle将JAR工件发布到Artifactory
  4. c#解决在数据表格中无法显示秒数问题
  5. 操作系统 | 用户态和内核态的切换(中断、系统调用与过程(库函数)调用)
  6. IPv4与IPv6数据报格式
  7. HDU-2084(简单DP)
  8. 小程序引发的深层思考
  9. 联想打印机 linux驱动怎么安装步骤,如何在MAC系统下安装打印机驱动
  10. presto 正则提取函数
  11. java spring log4j_配置spring的log4j日志记录
  12. java常见异常和代码演示
  13. python生成双层pdf
  14. IP签名档HTML版本源码 显示精准定位
  15. Linux常用命令宝典(简单易懂)
  16. 性能测试:手机IOS性能测试
  17. 立体翻转效果海报怎么制作?PS详细步骤教程!
  18. OpenCV BGR RGB 灰度图像 彩色图像
  19. 【Matlab学习手记】ELM分类
  20. oracle事务的四种隔离级别,事务的四种隔离级别

热门文章

  1. android 渠道包测试,Android快速批量多渠道包的“蛋生”
  2. 去掉服务器硬盘告警声音,某局点服务器硬盘误拔出导致硬盘告警
  3. ipmitool常用命令详解
  4. ipmitool介绍_ipmitool 常用命令 IPMI
  5. (产品贴)百度手机卫士竞品分析报告
  6. 【程序员如何买基金 七】筛选优秀的主动基金
  7. eclipse 一直Refresh SVN status cach,一直refreshing workspace
  8. mysql克隆master_科学网—Windows下Mysql的Master-Slave Replication主从复制配置 - 刘洋的博文...
  9. Opera GX for Mac(Opera游戏浏览器)
  10. Android7.0 Watchdog机制