赛后题解——真假亚瑟王(数论)
C. 真假亚瑟王
题目描述
魔术师梅林在水晶球中预见了莫德雷德的叛逆,她决定在在莫德雷德叛逆之前采取一个有效的策略保护亚瑟王。
具体做法如下:使用魔法将亚瑟王复制成N份,当然,其中只有一个使真的。她认为这样就能有效的保护亚瑟王不被杀死。
为了自己能最终找到亚瑟王,她将所有的亚瑟王按1-N编号,并设定了一个密码数字X。真亚瑟王的编号是最接近N的且不能被2−X中任何一个数整除的数。(即真亚瑟王的编号的约数不再2−X中)。
输入
两个整数X,N,用一个空格隔开。
输出
真亚瑟王的编号。
样例输入
3 6
样例输出
5
样例输入
3 4
样例输出
1
样例输入
5 50
样例输出
49
提示
【数据范围】
对于30%的数据,2≤X≤N≤102≤X≤N≤102≤X≤N≤10
对于60%的数据,2≤X≤N≤10002≤X≤N≤10002≤X≤N≤1000
对于80%的数据,2≤X≤N≤1052≤X≤N≤10^52≤X≤N≤105
对于100%的数据,2≤X≤N≤1092≤X≤N≤10^92≤X≤N≤109
解决思路:分类讨论
提示:不合法代表一定不是答案,合法代表一定是答案。
已知:对于整数nnn,小于等于nnn且距离最近的素数离nnn不会太远,所以直接暴力枚举,判断素数即可。
第一类:x2≥nx^2 \ge nx2≥n
1、因为一个合数肯定有一个小于等于根号的因子,所以小于等于nnn的所有合数的最小因子必然在区间[2,x][2,x][2,x]内,因此[2,n]2,n]2,n]的合数不合法。
2、[2,x][2,x][2,x]的每个数不合法。
综上所述,[x+1,n][x+1,n][x+1,n]的素数可能合法。
暴力判断小于等于nnn且距离最近的素数(前提是大于等于x+1x+1x+1或者大于xxx)
若存在素数,输出素数。
若不存在素数,输出111(由于[2,n][2,n][2,n]中没有一个数合法,只剩下数字111了)
第二类:x2<nx^2 < nx2<n
1、因为一个合数肯定有一个小于等于根号的因子,所以小于等于x2x^2x2的所有合数的最小因子必然在区间[2,x][2,x][2,x]内,因此[2,x2][2,x^2][2,x2]的合数不合法,但是[x2+1,n][x^2+1,n][x2+1,n]的合数可能合法。
例如:x=2,n=99x=2,n=99x=2,n=99时,999999合法但是是合数。
2、[x+1,n][x+1,n][x+1,n]的素数可能合法。
综上所述,从nnn开始往小于nnn的数开始判断,如果这个数是素数或者它不是[2,x][2,x][2,x]中任意数的倍数的话,输出这个数即可(直接枚举小于根号的因子判断是否在[2,x][2,x][2,x]内)
代码
#include<cmath>
#include<queue>
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;#define mod 77797
typedef long long ll;
const int N = 2e1 + 10;
const ll INF = 0x3f3f3f3f3f3f3f3f;bool judge(int n, int x) {if (n == 1) return true;if (n >= 2 && n <= x) return false;for (int i = 2; i <= n / i; i++) {if (n % i == 0) {if (i <= x) return false;}}return true;
}
bool isPrime(ll n) {if (n == 1) return false;for (int i = 2; i <= n / i; i++) {if (n % i == 0) {return false;}}return true;
}int main() {ll x, n;cin >> x >> n;if (x * x >= n) {while (n > x) {if (isPrime(n)) {cout << n << endl;return 0;}n--;}cout << 1 << endl;return 0;}else {while (n) {if (judge(n, x)) {cout << n << endl;return 0;}n--;}}return 0;
}
赛后题解——真假亚瑟王(数论)相关推荐
- [BZOJ4008]亚瑟王
Description 小 K 不慎被 LL 邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑. 他决定,在脱坑之前,最后再来打一盘亚瑟王.既然是最后一战,就一定要打得漂 亮.众所周知,亚瑟王是一 ...
- 乖离性暗机器人_《乖离性百万亚瑟王》国服超弩暗机器人平民通关攻略
乖离性百万亚瑟王国服第一次迎来新的机器人类型BOSS,难度还是比较大的!在打暗机器人的时候有什么需要注意的细节,我们一起来看看吧! 首先介绍一下暗机器人的属性数据: 属性:暗系 接下来介绍一下BOSS ...
- SSD成就了《扩散性百万亚瑟王》
盛大网络最近上线了一款手机游戏<扩散性百万亚瑟王>.游戏推出的当周,盛大的股票上涨了30%.这款一上线就受到广泛欢迎的游戏后端支持平台就采用了英特尔针对数据中心的DC系列S3700和S35 ...
- [HNOI2015]亚瑟王
题目描述 小 K 不慎被 LL 邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑.他决定,在脱坑之前,最后再来打一盘亚瑟王.既然是最后一战,就一定要打得漂亮.众所周知,亚瑟王是一个看脸的游戏,技能 ...
- 亚瑟王(bzoj 4008)
Description 小 K 不慎被 LL 邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑. 他决定,在脱坑之前,最后再来打一盘亚瑟王.既然是最后一战,就一定要打得漂 亮.众所周知,亚瑟王是一 ...
- 乖离性暗机器人_乖离性百万亚瑟王国服超弩暗机器人如何打|乖离性百万亚瑟王国服超弩暗机器人平民打法攻略分享_好特教程...
<乖离性百万亚瑟王>国服近日迎来了新的机器人类型BOSS,难度不小,那么在打暗机器人的时候有什么需要注意的细节呢?下面我们就一起来看看吧. 首先介绍一下暗机器人的属性数据: 属性:暗系 接 ...
- 【BZOJ4008】【HNOI2015】亚瑟王 [期望DP]
亚瑟王 Time Limit: 20 Sec Memory Limit: 512 MB [Submit][Status][Discuss] Description 小 K 不慎被 LL 邪教洗脑了, ...
- BZOJ-4008: [HNOI2015]亚瑟王 (概率期望DP)
4008: [HNOI2015]亚瑟王 Time Limit: 20 Sec Memory Limit: 512 MBSec Special Judge Submit: 1627 Solved: ...
- 唐 库利超级计算机,第七卷 乖离性 百万亚瑟王_第二百五十二章 绝望中的希望...
第七卷 乖离性 百万亚瑟王_第二百五十二章 绝望中的希望 赫布里底训练大厅. "诸位,结果已经分析出来了,丘库林,也就是被你们捉到的闯入者,他身上的神装的确是断绝时代的遗物不错,而且,这件神 ...
- 概率DP——BZOJ4008 [HNOI2015]亚瑟王
[HNOI2015]亚瑟王 Description 小 K 不慎被 LL 邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑.他决定,在脱坑之前,最后再来打一盘亚瑟王.既然是最后一战,就一定要打得漂 ...
最新文章
- ORACLE将查询字段指定为某种类型
- C语言试题九十之实现输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
- 华为轮值董事长郭平2020全联接大会主题演讲:永远面向阳光,阴影甩在身后
- Linux在文件第一列添加字段,linux – 如何将file1的每一列追加到file2的特定字段并创建一个新的输出文件?...
- python选择排序算法图解_简单选择排序算法(C语言详解版)
- 玉禾田环境金蝶云ERP操作手册
- tapestry5 中文文档
- 玩客云pc端_玩客云下载-玩客云电脑版下载-华军软件园
- java 毫秒转分钟和秒_Java程序将毫秒转换为分钟和秒
- 诗词经典唯美名句赏析
- 光谱分析中的变量选择
- Docker部署Nebula Graph2.0和Studio
- 定语从句中的关系代词
- 我从非科班转到图像算法工程师(图像识别、机器学习、深度学习)(3个月)的经历
- 爱奇艺2018届C++校招笔试
- prometheus监控常用告警规则
- IOT(24)---物联网网关
- 面向开放词汇的目标检测ECCV2022
- win10找不到打印机_新版Windows 10的外设Bug:重启后找不到USB打印机端口
- adb基本操作之monkey基本操作入门准备-1