题目: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反质数<暴搜>的更多相关文章

  1. bzoj:3085: 反质数加强版SAPGAP

    Description 先解释一下SAPGAP=Super AntiPrime, Greatest AntiPrime(真不是网络流),于是你就应该知道本题是一个关于反质数(Antiprime)的问题 ...

  2. BZOJ 1053 - 反素数ant - [数论+DFS][HAOI2007]

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1053 题解: 可以证明,$1 \sim N$ 中最大的反质数,就是 $1 \sim N$ ...

  3. BZOJ 1053 反素数 题解

    题面 引理1:  1~n中的最大反质数,就是1~n中约数个数最多的数中最小的一个(因为要严格保证g(x)>g(i)): 引理2:1~n中任何数的不同因子不会超过10个,因为他们的乘积大于2,00 ...

  4. HYSBZ 1053 反质数

    input n 1<=n<=2000000000 output 不大于n的最大反质数 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4.如果某个正整数x满足:g( ...

  5. BZOJ 1053 & 反素数

    题意: 反素数,膜一篇GOD's Blog...http://blog.csdn.net/ACdreamers/article/details/25049767 此文一出,无与争锋... CODE: ...

  6. BZOJ 3085: 反质数加强版SAPGAP (反素数搜索)

    题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3085 题意:求n(<=10^100)之内最大的反素数. 思路: 优化2: i ...

  7. BZOJ 1053 反素数ant

           初读这道题,一定有许多疑惑,其中最大的疑惑便是"反素数",反素数的概念很简单,就是,a<b同时a的因数个数大于b的因数个数.但是想要完成本题还需要一些信息,关于 ...

  8. BZOJ 1024 SCOI2009 生日快乐 暴搜

    思路:eng...按照题意搜就好了 (一定要注意题面的n<=10--) 枚举断点...反正n<=10不怂 //By SiriusRen #include <cstdio> #i ...

  9. BZOJ 4857 反质数序列

    题面 奇数+奇数一定不是质数(1+1除外),偶数+偶数一定不是质数,质数只可能出现在偶数+奇数中 把所有的点排成两列,权值为奇数的点在左边,权值为偶数的在右边 如果左边的点x+右边的点y是质数,我们就 ...

随机推荐

  1. koa01

    1.koa简介 koa是express团队开发的一个更加轻量级的服务端开发框架,也是未来的趋势 2.安装 npm i -g koa-generator //全局安装koa脚手架 3.创建项目 koa2 ...

  2. JZOJ 1736. 扑克游戏 (Standard IO)

    1736. 扑克游戏 (Standard IO) Time Limits: 1000 ms Memory Limits: 128000 KB Description 有一棵无穷大的满二叉树,根为sta ...

  3. iview2+ 表单密码验证

    <Form :model="formItem" v-model="formItem.id" ref="formItem" :label ...

  4. ES6拓展的对象功能

    前言:因为之前看过很多的博客啊,书籍啊但是最后都雁过无痕,再问我基本没什么印象,所以就迫使自己看书的时候记点笔记,因为懒得写字[捂脸],现在是打字比写字要快好多,所以就写博客吧! ES6规范明确定义了 ...

  5. url,href和src的区别,defer和async的区别

    URL(Uniform Resource Locator):统一资源定位符,互联网上的每个文件都有一个唯一的URL,基本URL包含协议,IP地址,路径和文件名. 重点:herf和src的区别 href ...

  6. CJSON的封装API

    为了更方便使用C的JSON库,对其进行了一层封装. H文件: #ifndef __JSONHELPER__ #define __JSONHELPER__ #ifdef __cplusplus exte ...

  7. 28 复杂的使用Specification查询

    /** * Specification的多表查询 */ @Test public void testFind() { Specification<LinkMan> spec = new S ...

  8. 5W随想

    什么时候都要想5个W:what.where.when.why.who 比如:提bug的时候:这个问题是什么问题,在哪里发现的,什么时候发现的/什么时候修复好,怎么发现的/为什么是bug,谁发现的/指给 ...

  9. 【python】提取sql语句中的表名

    前言 最近刚学python,写一个小工具时需要提取sql语句中表名,查询一番后找到一篇文章挺不错的,mark一下 PS.那篇文章是转载的,且没有标注转载自哪里 正文 import ply.lex as ...

  10. PBM error occurred during PreCloneCheckCallback: 由于目标计算机积极拒绝,无法连接

    问题如下: 迁移存储和主机的时候发生错误,错误如下: 出现了常规系统错误: PBM error occurred during PreCloneCheckCallback: 由于目标计算机积极拒绝,无 ...