CF1406E 【Deleting Numbers】
蒟蒻语
蒟蒻这次 \(CF\) 又双叒叕掉分了,\(C\) 都没有调出来。
还好再最后 \(10\) 秒钟调了下 \(E\) 块长 (块长 \(100\) => \(98\)),才没有掉得那么惨。
蒟蒻解
\(100000\) 里总共有 \(9592\) 个质数。
(下文 \(p_i\) 表示第 \(i\) 个质数)
首先 \(x\) 大于 \(\sqrt n\) 的质因数最多一个。
对于大于 \(\sqrt n\) 的质数数可以进行分块, 块长为 \(B\)。
每次把一个块里面的质数删完(B p[i]
), 然后删完之后看看删掉的数的总数是否等于 A 1
答案的变化量。如果不相等,那么说明 \(x\) 一定有一个质因数处于这个块内,暴力 A p[i]
判断是否为 \(1\) 就行了。如果 A p[i]
为 \(1\), 那么就说明 \(x\) 大与 \(\sqrt n\) 的质因数就是 \(p_i\)。
那么小于 \(\sqrt n\) 的质数就很好弄了, 直接先删这个质数的倍数,然后一个个暴力判 \(x\) 最多能整除该质数的几次方就好了。
蒟蒻码
不懂的看丑陋无比的代码吧
#include<bits/stdc++.h>
#define N 100010
#define B 98
using namespace std;
int Ans = 1;
bool Prime[N];
int tot, p[N];
void xxs(int x) {
for(int i = 2; i <= x; i++) {
if(!Prime[i]) p[++tot] = i;
for(int j = 1; p[j] * i <= x && j <= tot; j++) {
Prime[p[j] * i] = 1;
if(i % p[j] == 0) break;
}
}
}
int n, tt, maxn;
void get(int x) {
int now = 1;
printf("B %d\n", x);
fflush(stdout);
scanf("%d", &tt);
while(1) {
now *= x;
if(now > n) break;
printf("A %d\n", now);
fflush(stdout);
scanf("%d", &tt);
if(tt == 0) break;
Ans *= x;
}
}
int main() {
scanf("%d", &n);
xxs(n);
for(int i = 1; i <= tot; i++) if(p[i] <= sqrt(n)) maxn = i;
int ssss = n, L = maxn, R = tot;
for(int i = 1; i <= B; i++) {
int L = (i - 1) * B + 1, R = min(i * B, tot);
for(int j = L; j <= R; j++) {
if(j <= maxn) continue;
printf("B %d\n", p[j]);
fflush(stdout);
scanf("%d", &tt);
ssss -= tt;
}
printf("A 1\n");
fflush(stdout);
scanf("%d", &tt);
if(ssss != tt) {
for(int j = L; j <= R; j++) {
if(j <= maxn) continue;
printf("A %d\n", p[j]);
fflush(stdout);
scanf("%d", &tt);
if(tt) {
Ans = p[j];
break;
}
}
break;
}
if(R == tot) break;
}
for(int i = 1; i <= maxn; i++) get(p[i]);
printf("C %d\n", Ans);
fflush(stdout);
return 0;
}
CF1406E 【Deleting Numbers】的更多相关文章
- 题解【洛谷】CF134A
题解 CF134A [Average Numbers] 这题就是简单的模拟. 只不过要优化一下常数什么的 思路: 为了不浪费时间总是取平均数,直接用一个 S 储存总和,每次都减去 a_i 再除以 n ...
- 【66.47%】【codeforces 556B】Case of Fake Numbers
time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...
- 【HDU 4722】 Good Numbers
[题目链接] 点击打开链接 [算法] f[i][j]表示第i位,数位和对10取模余j的数的个数 状态转移,计算答案都比较简单,笔者不再赘述 [代码] #include<bits/stdc++.h ...
- 【POJ 1995】 Raising Modulo Numbers
[题目链接] http://poj.org/problem?id=1995 [算法] 快速幂 [代码] #include <algorithm> #include <bitset&g ...
- 【codeforces 746E】Numbers Exchange
[题目链接]:http://codeforces.com/problemset/problem/746/E [题意] 你有n张卡片,上面写着不同的数字; 然后另外一个人有m张上面写着不同的数字的卡片: ...
- 【codeforces 367C】Sereja and the Arrangement of Numbers
[题目链接]:http://codeforces.com/problemset/problem/367/C [题意] 我们称一个数列a[N]美丽; 当且仅当,数列中出现的每一对数字都有相邻的. 给你n ...
- 【Python数据分析】Python3操作Excel(二) 一些问题的解决与优化
继上一篇[Python数据分析]Python3操作Excel-以豆瓣图书Top250为例 对豆瓣图书Top250进行爬取以后,鉴于还有一些问题没有解决,所以进行了进一步的交流讨论,这期间得到了一只尼玛 ...
- Python全栈开发【基础二】
Python全栈开发[基础二] 本节内容: Python 运算符(算术运算.比较运算.赋值运算.逻辑运算.成员运算) 基本数据类型(数字.布尔值.字符串.列表.元组.字典) 其他(编码,range,f ...
- 【uTenux实验】互斥体
互斥体,维基百科中交互斥锁.其定义是这样的:互斥锁(英语:英语:Mutual exclusion,缩写 Mutex)是一种用于多线程编程中,防止两条线程同时对同一公共资源(比如全局变量)进行读写的机制 ...
随机推荐
- 2018.1.15复习_ css+js
[1]几个常见的css标签:--------------------------------------------------background-color; 设置背景颜色background-p ...
- Hive 报错 Failed to load class "org.slf4j.impl.StaticLoggerBinder".
打开hive报错 SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaultin ...
- SQL Server将查询出数据进行列转行操作
在日常的SQL Server数据查询时经常会遇到需要将数据列转换成行的操作,现将自己学习的列转行SQL语句举例如下: --首先查询语句 SELCT * FROM YXBAK..TBYJKSTEMP ...
- C#高级编程之反射
反射的定义 MSDN定义:反射提供描述程序集.模块和类型的对象(Type类型). 可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型,然后调用其方法或访问器字段和属性. 如 ...
- deepin 20安装后系统没有声音解决方案(亲测有效)
打开终端: sudo vi /etc/default/grub GRUB_CMDLINE_LINUX_DEFAULT原有配置后面添加 snd_hda_intel.dmic_detect=0 即GRUB ...
- 云原生应用Go语言:你还在考虑的时候,别人已经应用实践
摘要:在近日于上海召开的第六届Gopher China大会上,华为云微服务首席架构师田晓亮分享了<华为云的Go语言云原生实战经验>,讲述如何构建韧性.高可靠.安全的云原生应用系统,并孵化云 ...
- RayFire的下载与安装方法
RayFire的下载与安装方法 发布时间:2020/10/12 近几年,电影中融入了越来越多的动画元素,其中的爆炸场景更是十分吸引眼球.小编不禁好奇,什么样的插件能做出来如此好玩的特效,上网搜索一番发 ...
- Guitar Pro吉他指弹入门——双手泛音
曾经有一段时间在琴行里经常遇到有人来试琴,很多人试弹得曲子就是郑成河的<Flaming>,直译过来就是热情的意思.这首曲子里面有很多泛音存在,吉他泛音类似于钟鸣或者摇铃的声音,是一种令人耳 ...
- JS 数组对象
定义数组: 数组对象用来在单独的变量名中存储一系列的值. 创建一个数组有三种方法. 1: 常规方式: var myCars=new Array(); myCars[0]="Saab" ...
- 【CF600E】Lomsat gelral——树上启发式合并
(题面来自luogu) 题意翻译 一棵树有n个结点,每个结点都是一种颜色,每个颜色有一个编号,求树中每个子树的最多的颜色编号的和. ci <= n <= 1e5 裸题.统计时先扫一遍得到出 ...