洛谷P1463 反素数
经典题了,很难想到这TM是搜索......
题意:求[1, n]中约数最多的数中最小的。
解:我们有约数个数定理。
所以考虑通过枚举每个质因数个数来直接计算出约数个数。
然后就可以搜索了。
注意:若p1 < p2 则 a1 >= a2 否则交换a1 a2更优
注意:质数求25以内的即可。因为乘起来已经爆int了。
多说无益,看代码。
#include <cstdio>
#include <algorithm>
typedef long long LL;
const int N = ; int p[N], top, lim[N];
bool vis[N];
LL s[N], n; inline void getp(int b) {
for(int i = ; i <= b; i++) {
if(!vis[i]) {
p[++top] = i;
}
for(int j = ; j <= top && i * p[j] <= b; j++) {
vis[i * p[j]] = ;
if(i % p[j] == ) {
break;
}
}
}
for(int i = ; i <= top; i++) {
LL t = p[i];
while(t <= n) {
t *= p[i];
lim[i]++;
}
}
return;
} LL ans = , cnt = ;
void DFS(LL now, LL s, int t, int last) {
if(now > n) {
return;
}
if(t == top + || last == ) {
if(cnt < s) {
cnt = s;
ans = now;
}
else if(cnt == s) {
ans = std::min(ans, now);
}
return;
} LL tp = now;
for(int i = ; i <= lim[t] && i <= last && tp <= n; i++) {
DFS(tp, s * (i + ), t + , i);
tp *= p[t];
}
return;
} int main() {
scanf("%lld", &n);
getp();
LL t = ;
for(int i = ; i <= lim[]; i++) {
DFS(t, i + , , i);
t *= ;
} printf("%lld", ans);
return ;
}
AC代码
洛谷P1463 反素数的更多相关文章
- 洛谷 [P1436] 反素数
算术基本定理的应用 算术基本定理: 一个正整数 \(N\) 能唯一分解成如下形式 \[N=p_1 ^ {c_1}p_2^{c_2}\cdots P_m ^ {c_m}\] 其中 \(c_i\) 都是正 ...
- 【题解】洛谷P1463 [POI2002][HAOI2007] 反素数(约数个数公式+搜索)
洛谷P1463:https://www.luogu.org/problemnew/show/P1463 思路 约数个数公式 ai为质因数分解的质数的指数 定理: 设m=2a1*3a2*...*pak ...
- 洛谷 P1463 [SDOI2005]反素数ant
P1463 [SDOI2005]反素数ant 题目描述 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4. 如果某个正整数x满足:g(x)>g(i) 0<i< ...
- 【洛谷P1463】反素数
题目大意:给定 \(N < 2e9\),求不超过 N 的最大反素数. 题解: 引理1:不超过 2e9 的数的质因子分解中,最多有 10 个不同的质因子,且各个质因子的指数和不超过30. 引理2: ...
- 洛谷 P1463 [POI2002][HAOI2007]反素数
题目链接 题目描述 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4. 如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数.例如,整数1, ...
- 洛谷 P1463 [SDOI2005]反素数ant && codevs2912反素数
题目描述 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4. 如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数.例如,整数1,2,4,6 ...
- 洛谷 P1463 [HAOI2007]反素数
https://www.luogu.org/problemnew/show/P1463 注意到答案就是要求1-n中约数最多的那个数(约数个数相同的取较小的) 根据约数个数的公式,在约数个数相同的情况下 ...
- 洛谷 P1463、POI2002、HAOI2007 反素数
题意: 求最小的$x\in[1,N]$,使得$x$为$g(x)$最大的数 中最小的一个. 分析: 1.$x$不会有超过$10$个不同质因子.理由:$2 \times 3\times 5...\time ...
- 【洛谷P1835】素数密度
题目描述: 给定区间[L,R](L≤R≤2147483647,R-L≤1000000),请计算区间中素数的个数. 思路: 暴力: 蒟蒻:哦?绿题?这么水?(便打出下面代码) 这绝对是最容易想到的!但, ...
随机推荐
- Quartz框架学习(1)—核心层次结构
Quartz框架学习 Quartz(任务调度)框架的核心组件: job:任务.即任务调度行为中所要调度的对象. trigger:触发器.是什么促使了一个任务的调度?当然是时间.这也算事件驱动类型程序. ...
- python3 输出系统信息
一.安装psutil库 pip3 install psutil 二.代码 #!/usr/bin/python3 coding=utf-8 import psutil import uuid impor ...
- mobile adaptor & css media query
mobile adaptor & css media query 移动端适配 & 媒体查询 http://cssmediaqueries.com/ device-aspect-rati ...
- build/temp.linux-x86_64-2.7/_openssl.c:493:30: fatal error: openssl/opensslv.h: No such file or directory
解决:apt-get install libssl-dev apt install python-dev(这个可能和那个错误关系不大)
- react用构造函数创建组件
有两种方法,一种是通过构造函数创建,一种是通过class创建 1.构造函数创建组件 用function+组件名的方式创建,创建好了,在render里面以标签的形式一丢就可以啦!但是这种方式必须要ret ...
- Angular 2 to Angular 4 with Angular Material UI Components
Download Source - 955.2 KB Content Part 1: Angular2 Setup in Visual Studio 2017, Basic CRUD applicat ...
- rediret 加/与不加/的区别
- iOS后台运行播放无声音频 测试可行
如果打回来了,就自认倒霉吧 制作无声音频. @interface AppDelegate () { NSInteger count; } @property(strong, nonatomic)NST ...
- 利用kali破解wifi密码
准备工具 1.笔记本 2.USB无线上网卡(必备) 3.kali系统 4.密码字典 第一种方法 暴力破解法 何为暴力破解呢,其实就是一个一个密码去试,直到正确的密码. 现在的wifi一般加密都是: 1 ...
- Codeforces 768B B. Code For 1
参考自:https://www.cnblogs.com/ECJTUACM-873284962/p/6423483.html B. Code For 1 time limit per test:2 se ...