题目链接

对于任意的正整数\(x\),记其约数的个数为\(g(x)\)。现在定义反素数:对于\(0<i<x\),都有\(g(x)>g(i)\),那么就称x为反素数。

现在给定一个数N,满足\(1\leq N\leq 2*10^9\),求出不超过\(N\)的最大的反素数。

 

由反素数的定义我们知道,若\(x\)为反素数,那么\(x\)肯定是具有相同约数个数的数中最小的那一个;并且x的约数个数应该是最多的。

很明显直接枚举肯定要炸。观察到\(N\)不会超过\(2*10^9\),那么就可以知道:\(1\)~\(N\)中任何数质因子都不超过10个,并且所有质因子的指数总和不超过30。

然后。。反素数还有一个关键的性质,就是将它质因数分解过后,其指数是单调不增的。证明的话可以考虑交换两项的指数来考虑,对于一个\(p^{k_1}\),假设存在一个\(q^{k_2}\)并且满足\(p<q,k_1<k_2\),那么交换\(k1,k2\),会得到一个更小的且约数相同的数。

那么之后我们可以直接利用这些性质爆搜就好了。

代码如下:

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
typedef long long ll;
const int N = 105;
ll n;
ll prime[N] = {1, 2, 3, 5, 7, 11, 13, 17, 19, 23, 29};
ll c[N];
ll qp(ll a, ll b) {
ll ans = 1 ;
while (b) {
if(b & 1)
ans = ans * a;
a = a * a;
b >>= 1;
}
return ans ;
}
ll ans, num;
void dfs(int k, int p, ll mul) {
if(k == 11) {
ll tmp = 1;
for(int i = 1; i <= 10; i++) {
tmp *= (c[i] + 1);
}
if(tmp > num) {
num = tmp;
ans = mul;
} else if(tmp == num && ans > mul) {
ans = mul;
}
return ;
}
ll cnt = 0;
for(; cnt <= p; cnt++) {
if(qp(prime[k], cnt)*mul > n) {
if(cnt > 0)
cnt--;
break ;
}
}
cnt = min(cnt , (ll)p);
for(int i = cnt; i >= 0; i--) {
c[k] = i;
dfs(k + 1, cnt, mul * qp(prime[k], i));
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cin >> n;
dfs(1, 31, 1);
cout << ans;
return 0;
}

BZOJ1053:反素数(数学)的更多相关文章

  1. BZOJ1053 反素数

    题目大意 对于任何正整数x,其约数的个数记作g(x).如果某个正整数x满足对任意的0<i<x,都有g(x)>g(i) ,则称x为反质数.现在给定一个数N,求出不超过N的最大的反质数. ...

  2. 【BZOJ1053】 反素数ant

    BZOJ1053 反素数ant 我们先考虑唯一分解定理求出约数个数: \(x=a_1^{p_1}a_2^{p_2}a_3^{p_3}...a_k^{p_k}\) 然后\(num=\Pi_{i=1}^k ...

  3. [BZOJ1053][SDOI2005]反素数ant 数学

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1053 假设这个最大的反素数为$x$,那么$1<p<x$中数的因子数都没有$x$ ...

  4. 【bzoj1053】反素数

    [bzoj1053]反素数 题意 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4.如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数.例 ...

  5. BZOJ1053 [HAOI2007]反素数ant 数论

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 传送门 - BZOJ1053 题目描述 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4.如果某个正 ...

  6. 【BZOJ1053】[HAOI2007]反素数(搜索)

    [BZOJ1053][HAOI2007]反素数(搜索) 题面 BZOJ 洛谷 题解 大力猜一下用不了几个质因子,那么随便爆搜一下就好了. #include<iostream> #inclu ...

  7. 【BZOJ1053】[HAOI2007]反素数

    [BZOJ1053][HAOI2007]反素数 题面 bzoj 洛谷 题解 可以从反素数的定义看出小于等于\(x\)的最大反素数一定是约数个数最多且最小的那个 可以枚举所有的质因数来求反素数,但还是跑 ...

  8. 【BZOJ1053】[HAOI2007]反素数ant 暴力

    [BZOJ1053][HAOI2007]反素数ant Description 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4.如果某个正整数x满足:g(x)>g(i) ...

  9. bzoj1053: [HAOI2007]反素数ant

    51nod有一道类似的题...我至今仍然不会写暴搜!!! #include<cstdio> #include<cstring> #include<iostream> ...

随机推荐

  1. aircrack-ng无线破解实验

    查看无线网卡 airmon-ng 开启网卡监听模式 airmon-ng start wlan0 扫描附近的wifi airodump-ng wlan0mon 停止扫描: ctrl c 使用airodu ...

  2. Erlang数据类型的表示和实现(1)——数据类型回顾

    本文介绍 Erlang 语言中使用的各种数据类型以及这些数据类型在 Erlang 虚拟机内部的表示和实现.了解数据类型的实现可以帮助大家在实际开发过程中正确选择数据类型,并且可以更好更高效地操作这些数 ...

  3. 软工1816 · Beta冲刺(3/7)

    团队信息 队名:爸爸饿了 组长博客:here 作业博客:here 组员情况 组员1(组长):王彬 过去两天完成了哪些任务 协助后端完成历史记录接口.美食排行榜接口 完成食堂平面图的绘制 确定web端业 ...

  4. jquery ajax 跨域问题

    前言:关于跨域CORS 1.没有跨域时,ajax默认是带cookie的 2.跨域时,两种解决方案: 1)服务器端在filter中配置 详情:http://blog.csdn.net/wzl002/ar ...

  5. 团队作业8——测试与发布(Beta阶段)之展示博客

    展示博客 1. 团队成员的简介和个人博客地址,团队的源码仓库地址. a.陈福鹏 擅长技术:java.web等网站方面技术: 博客:http://www.cnblogs.com/royalchen/b. ...

  6. struts2与springmvc的区别

    1 机制不同 springmvc的入口是servlet,struts2的入口是filter,导致了二者的机制不同: 2 性能不同 spring会稍微比struts快.spring mvc是基于方法的设 ...

  7. 关闭SSD(固态硬盘)节能功能 提搞SSD性能

     此方法可以缓解比如QQ聊天时能明显感觉到打字过程不连续,0.1s左右的间歇停顿,操作系统并不会锁死,系统突然停止响应,硬盘灯狂闪,鼠标指针成为圆圈,点什么都没反应,这种状况可能会持续1-2分钟, ...

  8. swusec的构想,顺便送开学福利——校园网一号多登录演示

    前言: 我不是什么大牛,我只想通过我的努力,打造swu网络安全爱好者的圈子.期待你加入. swusec是什么? swusec (SouthWestUniversity SecurityTeam),西南 ...

  9. JVM内存模型一

    JVM定义了若干个程序执行期间使用的数据区域.这个区域里的一些数据在JVM启动的时候创建,在JVM退出的时候销毁.而其他的数据依赖于每一个线程,在线程创建时创建,在线程退出时销毁. 程序计数器 程序计 ...

  10. DAY6-Flask项目

    1.ViewModel:处理原始数据:裁剪修饰合并 2.访问静态资源 默认情况下,访问的路径为app根目录的下的static文件,为什么说app是根目录而不是fisher.py下,因为在实例化对象的时 ...