题意:

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的更多相关文章

  1. Codeoforces 558 B. Duff in Love

    //   B. Duff in Love time limit per test 2 seconds memory limit per test 256 megabytes input standar ...

  2. codeoforces 975B Mancala

    题意: 一个游戏,有14个洞,每个洞中开始有若干个球或者没有球. 每一步的操作,是将一个洞中的所有球取出,再逆时针放一个球到它的后一个洞,后两个洞,后三个洞....如果当前放的是最后一个,那么下一个又 ...

  3. Linux 无线网卡配置

    无线网卡常见的配置选项 某TL-WR842N路由器无线配置选项含义: 无线名称 路由器的无线(Wi-Fi)名称.无线密码 无线加密使用WPA2-PSK/WPA-PSK加密方式.AES加密算法,无线密码 ...

  4. [Codeforces #188] Tutorial

    Link: Codeoforces #188 传送门 A: 先全转为正数,后面就全是指数级增长了 #include <bits/stdc++.h> using namespace std; ...

  5. CLion 的 Debug 模式是怎么回事

    我对这个问题产生兴趣的起因是 Codeoforces Avito Challenges 2018 的 E 题,我想到了正解,但写得太慢,最后一刻才提交.有个地方写错,结果是 Runtime error ...

随机推荐

  1. 如何获取Android系统APP的Package Name和Activity Name

    有两种方式: 方式一.aapt.exe查看Package Name和入口Activity Name (1) 在安装路径android-sdk\platform-tools下查找aapt.exe:  如 ...

  2. 20165225 2017-2018-2《Java程序设计》课程总结

    20165225 2017-2018-2<Java程序设计>课程总结 - 每周作业链接汇总: 预备作业一:我期待的师生关系 预备作业二:学习基础和C语言基础调查 预备作业三:linux安装 ...

  3. c# string 扩展方法

    场景:只显示一字符串的前50个字符,多余的用“...”省略号替代 如果不用扩展方法当然也可以实现,写一个静态方法,如下: public class StringUtil { /// <summa ...

  4. Spring 配置文件出现异常!

    spring配置文件错误 Referenced file contains errors (http://www.springframework.org/schema/beans/spring-bea ...

  5. 前端 HTML body标签相关内容 常用标签 定义列表<dl>

    定义列表<dl> 定义列表的作用非常大. <dl>英文单词:definition list,没有属性.dl的子元素只能是dt和dd. <dt>:definition ...

  6. mysql数据库数据(字段数过大)太多导入不了的解决方法

    mysql数据库数据(字段数过大)太多导入不了的决方法: 1.打开navicat 工具 2.在数据库上右键,执行右键菜单命令“命令列界面” 3.在打开的窗口中,运行set global max_all ...

  7. 通过wui登陆 sap 页面对数据进行高级 搜索

    1: 登陆QGL系统. 在 T-CODE搜索框输入wui 会跳到搜索的web页面,进行搜索. 或者浏览器输入: https://ldciqgl.wdf.sap.corp:44300/sap(bD1lb ...

  8. C 字符及ASCII值

    .已知字母A的ASCII码为十进制的65,下面程序的输出是___A___. main() { char ch1,ch2; ch1='; ch2='; printf("%d,%c\n" ...

  9. [django]梳理drf知识点2

    外键关系的自动维护 原始提交的server数据 { ... "manufacturer": "DELL", "model_name": &q ...

  10. 多态使用时,父类多态时需要使用子类特有对象。需要判断 就使用instanceof

    instanceof:通常在向下转型前用于健壮性的判断,判断是符合哪一个子类对象 package Polymorphic; public class TestPolymorphic { public ...