[bzoj]1053反质数<暴搜>
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1053
感想:这道题拿到以后还是想去知道一个数的约数个数要怎么求,去网上搜了公式,但是还是没有思路,最后看了好几个大佬的博客我才勉强知道这道题怎么做
其实我看见这数据范围我就下意识觉得搜索会爆,但是实际上这道题不会爆的
方法:首先约数的个数求法
已知数n=2^a + 3^b + 5^c + 7^d +……+ 第i个素数^x
约数个数=(a+1)*(b+1)*(c+1)*(d+1)*……*(x+1)
在知道这个公式后就可以用暴搜了,但是还是要知道就是数据范围内,素数最多就12个,所以预处理前几个素数
还是看代码吧,我在代码中加了一些注释
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cstdlib>
#include<cmath>
#define maxn 2000000005
using namespace std; const int prime[]={,,,,,,,,,,,,,,,}; int n,m,ans,ans_tot; //设一个数n=2^a + 3^b + 5^c + 7^d +……+ prime[dep]^x;
//则这个数的约数个数为(a+1)*(b+1)*(c+1)*(d+1)*……*(x+1)
//这是约数个数计算公式 void fuck(int dep,long long now_val,int tot,int num)
{
//dep=当前是prime中的素数的下标
//now_val是当前的值
//tot指当前的约数的个数
//num是上一个素数(prime[dep-1])的幂
if(dep==)
{
if(now_val>ans&&tot>ans_tot){
ans=now_val;ans_tot=tot;
}//当发现比ans还大的数且这个数的约数个数比ans多
//即找到一个更优的解
if(now_val<=ans&&tot>=ans_tot)
{
ans=now_val;ans_tot=tot;
} //当发现一个比ans小但是约数比ans多的数
//说明ans不是一个反素数,也可以更新答案
return; }
int t=;
for(int i=;i<=num;i++)
{
fuck(dep+,now_val*t,tot*(i+),i);
//搜下一个素数,又i从0次方开始的,所以now_val*s,s=1;
//约数的公式可以知道这是tot*(i+1)
//到这个时候,prime[dep]已经i次方了,所以幂是i
//其实可以想到最优解是小素数的幂越大越优,所以加num限定
t*=prime[dep];//t表示当前素数prime[dep]的i次方
if(now_val*t>n)break;//当乘不下去了就跳出 } } int main()
{
scanf("%d",&n);
fuck(,,,);
printf("%d",ans);
}
以上皆为看了大佬博客后的理解,如有不对,请大佬们指出
[bzoj]1053反质数<暴搜>的更多相关文章
- bzoj:3085: 反质数加强版SAPGAP
Description 先解释一下SAPGAP=Super AntiPrime, Greatest AntiPrime(真不是网络流),于是你就应该知道本题是一个关于反质数(Antiprime)的问题 ...
- BZOJ 1053 - 反素数ant - [数论+DFS][HAOI2007]
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1053 题解: 可以证明,$1 \sim N$ 中最大的反质数,就是 $1 \sim N$ ...
- BZOJ 1053 反素数 题解
题面 引理1: 1~n中的最大反质数,就是1~n中约数个数最多的数中最小的一个(因为要严格保证g(x)>g(i)): 引理2:1~n中任何数的不同因子不会超过10个,因为他们的乘积大于2,00 ...
- HYSBZ 1053 反质数
input n 1<=n<=2000000000 output 不大于n的最大反质数 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4.如果某个正整数x满足:g( ...
- BZOJ 1053 & 反素数
题意: 反素数,膜一篇GOD's Blog...http://blog.csdn.net/ACdreamers/article/details/25049767 此文一出,无与争锋... CODE: ...
- BZOJ 3085: 反质数加强版SAPGAP (反素数搜索)
题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3085 题意:求n(<=10^100)之内最大的反素数. 思路: 优化2: i ...
- BZOJ 1053 反素数ant
初读这道题,一定有许多疑惑,其中最大的疑惑便是"反素数",反素数的概念很简单,就是,a<b同时a的因数个数大于b的因数个数.但是想要完成本题还需要一些信息,关于 ...
- BZOJ 1024 SCOI2009 生日快乐 暴搜
思路:eng...按照题意搜就好了 (一定要注意题面的n<=10--) 枚举断点...反正n<=10不怂 //By SiriusRen #include <cstdio> #i ...
- BZOJ 4857 反质数序列
题面 奇数+奇数一定不是质数(1+1除外),偶数+偶数一定不是质数,质数只可能出现在偶数+奇数中 把所有的点排成两列,权值为奇数的点在左边,权值为偶数的在右边 如果左边的点x+右边的点y是质数,我们就 ...
随机推荐
- koa01
1.koa简介 koa是express团队开发的一个更加轻量级的服务端开发框架,也是未来的趋势 2.安装 npm i -g koa-generator //全局安装koa脚手架 3.创建项目 koa2 ...
- JZOJ 1736. 扑克游戏 (Standard IO)
1736. 扑克游戏 (Standard IO) Time Limits: 1000 ms Memory Limits: 128000 KB Description 有一棵无穷大的满二叉树,根为sta ...
- iview2+ 表单密码验证
<Form :model="formItem" v-model="formItem.id" ref="formItem" :label ...
- ES6拓展的对象功能
前言:因为之前看过很多的博客啊,书籍啊但是最后都雁过无痕,再问我基本没什么印象,所以就迫使自己看书的时候记点笔记,因为懒得写字[捂脸],现在是打字比写字要快好多,所以就写博客吧! ES6规范明确定义了 ...
- url,href和src的区别,defer和async的区别
URL(Uniform Resource Locator):统一资源定位符,互联网上的每个文件都有一个唯一的URL,基本URL包含协议,IP地址,路径和文件名. 重点:herf和src的区别 href ...
- CJSON的封装API
为了更方便使用C的JSON库,对其进行了一层封装. H文件: #ifndef __JSONHELPER__ #define __JSONHELPER__ #ifdef __cplusplus exte ...
- 28 复杂的使用Specification查询
/** * Specification的多表查询 */ @Test public void testFind() { Specification<LinkMan> spec = new S ...
- 5W随想
什么时候都要想5个W:what.where.when.why.who 比如:提bug的时候:这个问题是什么问题,在哪里发现的,什么时候发现的/什么时候修复好,怎么发现的/为什么是bug,谁发现的/指给 ...
- 【python】提取sql语句中的表名
前言 最近刚学python,写一个小工具时需要提取sql语句中表名,查询一番后找到一篇文章挺不错的,mark一下 PS.那篇文章是转载的,且没有标注转载自哪里 正文 import ply.lex as ...
- PBM error occurred during PreCloneCheckCallback: 由于目标计算机积极拒绝,无法连接
问题如下: 迁移存储和主机的时候发生错误,错误如下: 出现了常规系统错误: PBM error occurred during PreCloneCheckCallback: 由于目标计算机积极拒绝,无 ...