BZOJ1053 [HAOI2007]反素数ant 数论
欢迎访问~原文出处——博客园-zhouzhendong
去博客园看该题解
传送门 - BZOJ1053
题目描述
(1<=N<=2,000,000,000)
题解
对于任何一个数 $p$ ,令 $p=\prod_\limits{i\in \{prime\} } i^{q_i}$ ,则总有 $ g(p)=\prod_\limits{i\in \{prime\} } (q_i+1)$ 。
命题1:如果 $p$ 是一个反素数,那么必然满足 $\forall i,j\in\{prime\} $ 如果 $i<j$ ,则 $q_i\geq q_j$ 。
我们可以简单的证明这一点。即:若 $q_i<q_j$ 则 $i^{q_i}j^{q_j}\geq i^{q_j}j^{q_i}$ ,所以至少存在一个数 $q^\prime$ ,在满足 $g(q)=g(q^\prime)$ 的情况下,使得 $q^\prime < q$ 。这与之前 “$q$ 是反素数” 的定义相悖,所以命题1 得证。
但是,可以见得,上述命题虽然具有充分性,但是不具有必要性。
譬如:
$a=2^13^15^1$
$b=2^35^1$
它们的因数个数都是 $8$ 。
由于我们在证明了命题1 之后,很容易发现可能的反素数非常少。所以我们只要暴搜就可以了。
建议判掉类似于上面举的例子的这种情况。
代码
#include <cstring>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
#include <cmath>
using namespace std;
typedef long long LL;
const LL prime[]={,,,,,,,,,};
LL n,ans,cnt;
void dfs(LL times,int pos,int ysz,int maxv){
if (ysz>cnt)
ans=times,cnt=ysz;
else if (ysz==cnt&×<ans)
ans=times,cnt=ysz;
for (int i=;i<=maxv;i++){
times*=prime[pos];
if (times>n)
return;
dfs(times,pos+,ysz*(i+),i);
}
}
int main(){
scanf("%d",&n);
ans=cnt=;
dfs(,,,);
printf("%lld",ans);
return ;
}
BZOJ1053 [HAOI2007]反素数ant 数论的更多相关文章
- bzoj1053: [HAOI2007]反素数ant
51nod有一道类似的题...我至今仍然不会写暴搜!!! #include<cstdio> #include<cstring> #include<iostream> ...
- [BZOJ1053] [HAOI2007] 反素数ant (搜索)
Description 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4. 如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数.例如,整数 ...
- BZOJ1053: [HAOI2007]反素数ant(爆搜)
Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4163 Solved: 2485[Submit][Status][Discuss] Descript ...
- bzoj千题计划296:bzoj1053: [HAOI2007]反素数ant
http://www.lydsy.com/JudgeOnline/problem.php?id=1053 求n以内约数个数最多的数 #include<cstdio> using names ...
- 【BZOJ1053】[HAOI2007]反素数ant 暴力
[BZOJ1053][HAOI2007]反素数ant Description 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4.如果某个正整数x满足:g(x)>g(i) ...
- BZOJ 1053: [HAOI2007]反素数ant dfs
1053: [HAOI2007]反素数ant 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=1053 Description 对于任何正整 ...
- 【BZOJ】1053: [HAOI2007]反素数ant
1053: [HAOI2007]反素数ant Description: g(x)表示x的约数个数,反素数:对于任意的i (i < x),均有g(i) < g(x),则x为反素数:现在输入不 ...
- bzoj 1053: [HAOI2007]反素数ant 搜索
1053: [HAOI2007]反素数ant Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1497 Solved: 821[Submit][Sta ...
- BZOJ 1053 [HAOI2007]反素数ant
1053: [HAOI2007]反素数ant Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1948 Solved: 1094[Submit][St ...
随机推荐
- CopyFromScreen在屏幕缩放情况下需要做处理
using System; using System.Drawing; using System.Runtime.InteropServices; //这段代码转自网上 namespace Syste ...
- Java之Jacob调用COM接口DLL-----------------------------------dm。dll
用Java控制windows了,嗯,低层次按键模拟,可控制游戏,内存也不在话下. 一.环境介绍 1.myeclipse8.5 2.著名按键插件dm.dll 32bit.此插件实现COM接口,百度百科 ...
- JavaScript之Dom操作【删除当前节点】
//最新更新:2017-11-25 //现在可以通过更强大而快捷的方式为所有的HTMLElement元素的Dom操作扩展新的方法[注意事项:处理HTMLElemnt元素时,此法对IE-8无效] //原 ...
- luogu P3760 [TJOI2017]异或和
传送门 对于每个二进制位考虑有多少区间和这一位上为1 从前往后扫每个前缀和,如果当前这个前缀和某一个二进制位上为1,因为区间和由这个前缀和减去前面的前缀和得来,如果减去了这一位为0的前缀和,那么 减去 ...
- PhoneUtil
package cn.fraudmetrix.octopus.horai.biz.utils; import org.springframework.util.StringUtils; import ...
- java线程池如何合理的设置大小
线程池究竟设置多大要看你的线程池执行的什么任务了,CPU密集型.IO密集型.混合型,任务类型不同,设置的方式也不一样 任务一般分为:CPU密集型.IO密集型.混合型,对于不同类型的任务需要分配不同大小 ...
- android okhttp的使用
OkHttpClient client = new OkHttpClient(); String url = ""; Request request = new Request.B ...
- Codeplex最流行25个开源项目
1. VMukti富媒体协作平台 2. Microsoft SQL Server Product Samples: Engine 3. Patterns & Practices: Enterp ...
- __ATTR引发的编译错误【原创】
有一天我编译内核模块驱动的时候发现如下错误 Linux kernel版本:4.1.15 error: negative width in bit-field '<anonymous>' 代 ...
- mysql字符串 转 int-double CAST与CONVERT 函数的用法
MySQL 的CAST()和CONVERT()函数可用来获取一个类型的值,并产生另一个类型的值.两者具体的语法如下: CAST(value as type); CONVERT(value, type) ...