题意

有 \(n\) 个数 \(s+1\ldots s+n\),求是否能将这 \(n\) 个数放到 \(1\ldots n\) 上,且当令原数为 \(x\),放到 \(y\) 位置时有 \(x \mod y=0\)。

不超过 \(100\) 组数据,\(1\le n \le 10^9,0\le s\le 10^9\)。

题解

看上去很吓人的数据范围,也是一个让你以为这是结论题的数据范围。

但是仔细观察可以发现,当 \(s+1\ldots s+n\) 中有 \(2\) 个及以上质数时,只有将他们安排到 \(1\) 位置或者质数自身位置才有 \(x\mod y=0\)。

首先尝试将这两个质数安排到其自身的位置,这要求 \([s+1,s+n]\cap [1,n]\neq \varnothing\),即要求 \(s<n\)。

那么此时 \([s+1,n]\) 就能够安排到自己的位置了,那么就只剩下 \([n+1,s+n]\) 和 \([1,s]\) 了,可以发现这就是 \(s\) 和 \(n\) 交换后的结果。

但是,当 \(s\) 与 \(n\) 交换后,或者 \(s\) 与 \(n\) 不能交换时,存在 \(2\) 个或以上质数,那么显然无解了。另外,根据结论,在 \([2,10^9]\) 范围内,大约 \(300\) 个数就会出现一次质数,这里保险起见设 \(1000\) 个数出现一次质数。

这里又有一个很神奇的问题,ans+=can[i] 前面不能加 if(!match[i]),具体原因未知。

代码

#include<cstdio>
#include<algorithm>
#include<cstring>
const int MAXN=2000+5;
int n,s,match[MAXN],ver,vis[MAXN];
bool can(int x)
{
vis[x]=ver;
for(int i=1;i<=n;i++)
if((s+x)%i==0 && (!match[i]||(vis[match[i]]!=ver&&can(match[i]))))
{
match[i]=x;
return 1;
}
return 0;
}
int main()
{
int T;
scanf("%d",&T);
for(int t=1;t<=T;t++)
{
memset(vis,0,sizeof(vis));
memset(match,0,sizeof(match));
scanf("%d %d",&n,&s);
if(s<n) std::swap(n,s);
if(n>1000)
{
printf("Case #%d: No\n",t);
continue;
}
int ans=0;
for(int i=1;i<=n;i++)
{
ver=i;
ans+=can(i);
}
printf("Case #%d: %s\n",t,ans==n?"Yes":"No");
}
return 0;
}

最新文章

  1. 遇到IIS7配置PHP出现403和404错误的解决办法
  2. 对js中的Date扩展,格式化日期
  3. java并发编程-线程池的使用
  4. URAL 1139 City Blocks(数论)
  5. hihoCoder #1078 : 线段树的区间修改
  6. Use BEC to do mobile phone forensics
  7. CentOS安装Nexus(Maven私有库)详细配置及上传本地jar到私服
  8. nyoj 86 找球号(一)
  9. oracle随笔(转)
  10. Android 百度地图 SDK v3.0.0 (一)
  11. 详细解析BluetoothAdapter的详细api
  12. 基于visual Studio2013解决C语言竞赛题之1090测量重量
  13. hdu 1387 Team Queue (链表)
  14. java虚拟机学习-深入理解JVM(1)
  15. python基础5--输入输出、错误与异常
  16. Python GUI
  17. beta版使用说明
  18. 在同一台电脑部署多个Tomcat服务
  19. json -- dump load dumps loads 简单对比
  20. webpack打包vue文件报错,但是cnpm run dev正常,最后我只想说:是我太笨,还是webpack4.4版本太坑

热门文章

  1. MQTT 浏览器 mqttws31.min.js
  2. 牛客-Y 老师的乐高小镇
  3. 【PAT甲级】1054 The Dominant Color (20 分)
  4. iOS 开发之 23种设计模式
  5. Python安装numpy,pandas慢,超时报错,下载不了的解决方法
  6. video兼容ie,ckplayer网页播放器
  7. 「AHOI2014/JSOI2014」宅男计划
  8. AbstractQueuedSynchronizer AQS源码分析
  9. MongoDB的分片数据库命令总结
  10. 弹出USB大容量存储设备时出问题的解决方法