蒟蒻语

蒟蒻这次 \(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;
}

最新文章

  1. Android Studio:Failed to resolve ***
  2. cell 的复用机制
  3. Markdown工具的使用
  4. Starling Tutorial
  5. 小谈pointer和relation
  6. iOS开发UI篇—UIScrollView控件介绍
  7. HTML canvas font 属性
  8. BootStrap入门教程 (二) :BASE CSS(排版(Typography),表格(Table),表单(Forms),按钮(Buttons))
  9. redux-simple 简化版的redux
  10. hdu 4790 Just Random (思路+分类计算+数学)
  11. 一个很好的幻灯片效果的jquery插件--kinMaxShow
  12. [转]浅谈C++指针直接调用类成员函数
  13. SQL server常用函数使用示例
  14. Nodejs运行错误小结
  15. 基于SRS+OBS搭建直播系统
  16. JAVA-JSP内置对象之request获得参数的所有参数值(多个值)
  17. Android内核漏洞利用技术实战:环境搭建&amp;栈溢出实战
  18. Selenium2+python自动化60-异常后截图(screenshot)
  19. 雷林鹏分享:Ruby 多线程
  20. C# WebSocket解析(收发数据包、分片超长包处理)

热门文章

  1. python之 《进程之间数据交互和进程池》
  2. Jar 和 war 区别
  3. 2018.1.15复习_ css+js
  4. 一次看完28个关于ES的性能调优技巧,很赞,值得收藏!
  5. 在Guitar Pro中如何调节拍
  6. 【移动自动化】【一】环境依赖:android sdk 环境配置(windows + linux)
  7. 【Vue】1.前端项目初始化
  8. 二分查找 leetcode704
  9. React Native两种加载图片的方式
  10. [转载]Windows环境下 Hadoop Error: JAVA_HOME is incorrectly set. 问题