题目链接:https://www.luogu.org/problemnew/show/P1463

题意:

  对于任何正整数x,其约数的个数记作g(x)。例如g(1)=1、g(6)=4。

  如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数。例如,整数1,2,4,6等都是反质数。

  现在给定一个数N,你能求出不超过N的最大的反质数么?

题解:

  对于一个反素数p有两个结论:

    若将p表示为 ∏(a[i]^k[i])的形式,其中a[i]为质因子,k[i]为指数。

    (1)a[i]为从2开始的连续质数:2,3,5,7...

    (2)k[i]为不升序列:k[1]>=k[2]>=...k[x]

  证明:

    结论1:

      因为一个数x的因子个数 = ∏(k[i]+1)

      所以当两个数的k[i]序列完全相同时,a[i]为从2开始的连续质数的那个数字更小。

      所以另一个数一定不是反素数。

    结论2:

      若两个数的k[i]序列的元素相同(如{1,1,2}和{1,2,1}相同)

      由结论1可知,两个数的a[i]序列完全相同(都是从2开始的连续质数)

      所以k[i]为不升序列的那个数一定更小。

      所以另一个数一定不是反素数。

  那么就可以爆搜了。

  在保证a[i]为从2开始连续质数,且k[i]不升的前提下,枚举n以内所有可能是反素数的数。

  在枚举出的所有数中,答案为因子个数最多的那个数。

  若有因子相同的多个数,则选最小的那个数。

AC Code:

 #include <iostream>
#include <stdio.h>
#include <string.h>
#define INF 1000000000 using namespace std; const int p[]={,,,,,,,,,,,,,,,,}; long long n;
long long ans=;
long long now=; void dfs(int x,int lst,long long tot,long long v)
{
if(tot>now || (tot==now && v<ans)) ans=v,now=tot;
int cnt=;
while(v*p[x]<=n && cnt<lst)
{
v*=p[x]; cnt++;
dfs(x+,cnt,tot*(cnt+),v);
}
} int main()
{
cin>>n;
dfs(,INF,,);
cout<<ans<<endl;
}

Luogu P1463 [HAOI2007]反素数ant:数学 + dfs【反素数】的更多相关文章

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

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

  2. 1053. [HAOI2007]反素数ant【DFS+结论】

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

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

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

  4. [luogu]P1463 [SDOI2005]反素数ant[dfs][数学][数论]

    [luogu]P1463 [SDOI2005]反素数ant ——!x^n+y^n=z^n 题目描述 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4. 如果某个正整数x满足: ...

  5. Luogu P1463 [POI2002][HAOI2007]反素数【数论/dfs】By cellur925

    题目传送门 题目描述 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4. 如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数.例如,整数1 ...

  6. BZOJ 1053: [HAOI2007]反素数ant dfs

    1053: [HAOI2007]反素数ant 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=1053 Description 对于任何正整 ...

  7. 【BZOJ】【1053】【HAOI2007】反素数ant

    搜索 经典搜索题目(其实是蒟蒻只会搜……vfleaking好像有更优秀的做法?) 枚举质数的幂,其实深度没多大……因为$2^32$就超过N了……而且质数不能取的太大,所以不会爆…… /******** ...

  8. bzoj1053: [HAOI2007]反素数ant

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

  9. 【BZOJ】1053: [HAOI2007]反素数ant

    1053: [HAOI2007]反素数ant Description: g(x)表示x的约数个数,反素数:对于任意的i (i < x),均有g(i) < g(x),则x为反素数:现在输入不 ...

随机推荐

  1. Eclipse Plugin Installation and Windows User Access Control

    I make Eclipse Plugins and I sell them to developers using Eclipse. Most of the visitors to my web s ...

  2. Swing实现系统托盘

    /* 实现系统托盘化 */ protected void setToolSystemTray() { // 系统是否支持系统托盘 if (SystemTray.isSupported()) { // ...

  3. Crashing Robots - poj 2632

      Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8352   Accepted: 3613 Description In ...

  4. DrawRightEditText自定义EditText实现有内容时右侧图标按钮显示无内容时右侧图标按钮隐藏加上为空时晃动动画(二)

    经过大神指导,上面封装的还不够全面,触摸事件应该也放进自定义中去,那么问题来了,怎么区分呢!,这就涉及到了自定义属性的介绍了 我通过设置属性来判断在onTouch事件中应该进行什么操作,接下来看看改良 ...

  5. django form 表单验证

  6. nginx学习之静态内容篇(五)

    1.根目录和索引文件 server { root /www/data; location / { } location /images/ { } location ~ \.(mp3|mp4) { ro ...

  7. 执行后台任务的利器——Hangfire

    Hangfire是一个开源且商业免费使用的工具函数库.可以让你非常容易地在ASP.NET应用(也可以不在ASP.NET应用)中执行多种类型的后台任务,而无需自行定制开发和管理基于Windows Ser ...

  8. 5.Django数据库配置

    Django默认支持sqlite.mysql.oracle.postgresql数据库,像db2和sqlserver需要安装第三方的支持 配置Django数据库:\hello_django\hello ...

  9. IaaS,PaaS,Saas 云服务的介绍

    云服务只是一个统称,可以分成三大类. IaaS:基础设施服务,Infrastructure-as-a-service PaaS:平台服务,Platform-as-a-service SaaS:软件服务 ...

  10. 说说JSON和JSONP,也许你会豁然开朗,含jQuery用例(转载)

     前言: 说到AJAX就会不可避免的面临两个问题,第一个是AJAX以何种格式来交换数据?第二个是跨域的需求如何解决?这两个问题目前都有不同的解决方案,比如数据可以用自定义字符串或者用XML来描述,跨域 ...