codeoforces 932A
题意:
A和B在玩一个游戏,首先有一个X0 >= 3,之后选择一个小于X0的质数p,然后在找一个最小的X1 >= X0,并且p可以整除X1;之后再选择一个小于X1的质数p,然后再找一个最小的X2 >= X1,并且p可以整除X2。。。。
总之,每次会选择一个p小于Xi-1,然后找一个最小的Xi >= Xi-1,使得p可以整除Xi。注意如果p已经整除Xi-1,那么之后的数字就不会变了。
现在给出X2,要找出最小的X0,A和B玩游戏的时候并不play optimally。保证X2是一个合数。
思路:
如果已知一个数Xi,那么首先找到这个数的因子中最大的质数p,那么Xi-1的范围就是Xi – p + 1 ~ Xi(本身是可以取的),不可能从其它数字当中取得。
举个比较直观的例子,假设X2为28,最大的素数因子是7,假设X1取21,那么X2也只能取21,但是X1从22 ~ 28的范围,X2的取值都是28。
根据这个方法,就可以从X2推X1的范围,再从X1推X0。
复杂度是O(Nsqrt(N))。j * j <= n 这个式子是个好东西。
代码:
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <vector>
using namespace std; const int N = 1e6 + ; bool prime[N]; vector<int> v;
vector<int> p; int main()
{
for (int i = ;i <= ;i++)
{
if (!prime[i])
{
p.push_back(i);
for (int j = i * ;j <= ;j += i)
{
prime[j] = ;
}
}
} int n; scanf("%d",&n); int d; for (int i = ;i <= n;i++)
{
if (!prime[i] && n % i == )
{
d = i;
}
} for (int i = n - d + ;i <= n;i++)
{
if (prime[i])
{
v.push_back(i);
//printf("%d ",i);
}
} int ans = 1e7; for (int i = ;i < v.size();i++)
{
int x = v[i]; int tmp = ; for (int j = ;j * j <= x;j++)
{
if (x % j == )
{
if (!prime[j]) tmp = max(tmp,j);
if (!prime[x / j]) tmp = max(tmp,x/j);
}
} ans = min(ans,x - tmp + );
} printf("%d\n",ans); return ;
}
codeoforces 932A的更多相关文章
- Codeoforces 558 B. Duff in Love
// B. Duff in Love time limit per test 2 seconds memory limit per test 256 megabytes input standar ...
- codeoforces 975B Mancala
题意: 一个游戏,有14个洞,每个洞中开始有若干个球或者没有球. 每一步的操作,是将一个洞中的所有球取出,再逆时针放一个球到它的后一个洞,后两个洞,后三个洞....如果当前放的是最后一个,那么下一个又 ...
- Linux 无线网卡配置
无线网卡常见的配置选项 某TL-WR842N路由器无线配置选项含义: 无线名称 路由器的无线(Wi-Fi)名称.无线密码 无线加密使用WPA2-PSK/WPA-PSK加密方式.AES加密算法,无线密码 ...
- [Codeforces #188] Tutorial
Link: Codeoforces #188 传送门 A: 先全转为正数,后面就全是指数级增长了 #include <bits/stdc++.h> using namespace std; ...
- CLion 的 Debug 模式是怎么回事
我对这个问题产生兴趣的起因是 Codeoforces Avito Challenges 2018 的 E 题,我想到了正解,但写得太慢,最后一刻才提交.有个地方写错,结果是 Runtime error ...
随机推荐
- Excel--数据分列功能
原文:http://www.ittribalwo.com/article/3963.html excel分列功能一:按照固定宽度进行数据拆分 情景: 如下图所示,在日常工作中,我们经常需要根据人员的身 ...
- scrapy windows下出现importError:No module named 'win32api'
scrapy windows下出现importError:No module named 'win32api'需安装 pip install pypiwin32
- push问题1
问题: $ git pushTo gitee.com:kekemuyu/xtpole.git ! [rejected] master -> master (fetch first)error: ...
- 联系customer的js
import api from '@/js/api'; export var conService = function getInfoSend() { var loginState = localS ...
- js一次控制 多个style样式
]; m.style.cssText='color:green;background:cyan;' 控制多个过渡效果 m.style.transition='opacity 1s ease-in,ba ...
- js禁用页面上右键菜单、选中和复制
有时候我们不想页面上的内容被人复制走,那么就可以使用js对页面进行设置,禁止右键菜单.禁止选中.禁止复制等功能可以有效的达到这个效果,js代码如下所示: /** * 禁用右键菜单 */ documen ...
- vue-loader是什么?使用它的用途有哪些?
vue-loader是解析 .vue 文件的一个加载器,跟 template/js/style转换成 js 模块: 用途:js可以写es6.style样式可以scss或less:template可以加 ...
- 第二章 深入C#数据类型
深入C#数据类型 巧记:值(无ref)+值=不变 值(无ref)+引=变 引(有ref)+值/引=变 1.值类型和引用类型 1.引用类型 源于system.object家族 ...
- bat删除过期文件(FORFILES)
关键词:bat删除过期文件,bat,FORFILES 原文:https://blog.csdn.net/sandy9919/article/details/82932460 --最佳实践 :: IIS ...
- Delphi避免重复打开窗体
取消自动创建窗体 Form1关键代码 implementation uses Unit2; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObje ...