题目描述

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

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

现在给定一个数N,你能求出不超过N的最大的反质数么(即后面没有g比它大的),如有多个,则去最小?

输入输出格式

输入格式:

一个数N(1<=N<=2,000,000,000)。

输出格式:

不超过N的最大的反质数。

输入输出样例

输入样例#1:

1000
输出样例#1:

840

题解:

搜索+数论

可知一个数分解为x=p1^q1*p2^q2*p3^q3...时

因数个数为(q1+1)*(q2+1)*(q3+1)....

解释一下题意:

假设ans<ans2,g(ans)==g(ans2),

因为不满足g(ans)<g(ans2),所以ans后没有反质数。所以搜索时除取最大的g值时

还要判断g值相同时的反质数大小。

预处理出13个质数,因为13个质数积大于2e9,在处理出n之内prime[i]^j的值

存在p[i][j]里。

搜索每一个质数的指数。

 #include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
long long n,p[][],anss,ans=2e9;
int prime[];
void dfs(int x,long long num,long long sum)
{int i;
if (sum>n) return;
if (num>anss)
{
anss=num;
ans=sum;
}
if (num==anss)
{
ans=min(ans,sum);
}
if (x>)
{
return;
}
for (i=;i<=;i++)
{
if (p[x][i]==) break;
if (p[x][i]&&sum*p[x][i]<=n)
{
dfs(x+,num*(i+),sum*p[x][i]);
}
}
}
int main()
{int i,j;
cin>>n;
prime[]=;prime[]=;prime[]=;prime[]=;
prime[]=;prime[]=;prime[]=;prime[]=;
prime[]=;prime[]=;prime[]=;prime[]=;
prime[]=;
for (i=;i<=;i++)
{
long long x=;
for (j=;j<=;j++)
{x*=prime[i];
if (x>n) break;
p[i][j]=x;
}
}
dfs(,,);
cout<<ans;
}

[SDOI2005]反素数的更多相关文章

  1. 洛谷 P1463 [SDOI2005]反素数ant

    P1463 [SDOI2005]反素数ant 题目描述 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4. 如果某个正整数x满足:g(x)>g(i) 0<i< ...

  2. [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满足: ...

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

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

  4. [HAOI2007][SDOI2005]反素数

    题目:洛谷P1463.BZOJ1053.Vijos P1172.codevs2912. 题目大意:对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4. 如果某个正整数x满足:g ...

  5. P1463 [SDOI2005]反素数ant

    题意: 题解: 思维难度不高,考虑到n较大,而反质数个数较少 所以只要算出每个反质数即可 考虑如何计算,可以发现,我们只需枚举计算出约数有x个的最小数,再做一下判断即可 另外约数的个数=(a1+1)( ...

  6. [SDOI2005]反素数ant

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

  7. 洛谷 P1463 [SDOI2005]反素数ant && codevs2912反素数

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

  8. 洛谷 1463[SDOI2005] 反素数ant

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

  9. 【POJ2886】Who Gets the Most Candies?-线段树+反素数

    Time Limit: 5000MS Memory Limit: 131072K Case Time Limit: 2000MS Description N children are sitting ...

随机推荐

  1. 如何在jenkins上新建一个项目及其简单配置

    1.首先,点击[新建]进入选择页面,如下图(一般选择"构建一个自由风格的软件项目")     2.填好项目名称后,点击ok,跳转至如下页面,可以在这个页面进行项目的配置(包括拉源码 ...

  2. C语言第二次博客作业—分支结构

    一.PTA实验作业 题目1:计算分段函数 1.实验代码 double x,y; scanf("%lf",&x); if(x>=0){ y=sqrt(x); print ...

  3. linux 50个常用命令

    1.ls命令 ls是list的缩写,常用命令为ls(显示出当前目录列表),ls -l(详细显示当前目录列表),ls -lh(人性化的详细显示当前目录列表),ls -a(显示出当前目录列表,包含隐藏文件 ...

  4. Beta冲刺Day4

    项目进展 李明皇 今天解决的进度 因服务器端未完成登录态维护,故无法进行前后端联动. 明天安排 前后端联动调试 林翔 今天解决的进度 因上课和实验室事务未完成登录态维护 明天安排 完成登录态维护 孙敏 ...

  5. 【iOS】OC-时间转化的时区问题

    -(void)testTime{ NSDate *now = [NSDate date];//根据当前系统的时区产生当前的时间,绝对时间,所以同为中午12点,不同的时区,这个时间是不同的. NSDat ...

  6. electron打包vue项目

    electron是什么 Electron是由Github开发,用HTML,CSS和JavaScript来构建跨平台桌面应用程序的一个开源库. Electron通过将Chromium和Node.js合并 ...

  7. JAVA_SE基础——15.循环嵌套

    嵌套循环是指在一个循环语句的循环体中再定义一个循环语句结构,while,do-while,for循环语句都可以进行嵌套,并且可以互相嵌套,下面来看下for循环中嵌套for循环的例子. 如下: publ ...

  8. 常见web攻击总结

    搞Web开发离不开安全这个话题,确保网站或者网页应用的安全性,是每个开发人员都应该了解的事.本篇主要简单介绍在Web领域几种常见的攻击手段及Java Web中的预防方式. XSS SQL注入 DDOS ...

  9. Ansible实战演练

    [root@Ansible-server ~]# rpm -Uvh http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.n ...

  10. java 实现多文件打包下载

    jsp页面js代码: function downloadAttached(){ var id = []; id.push(infoid); var options = {}; options.acti ...