反素数:

对于任何正整数,其约数个数记为,例如,如果某个正整数满足:对任意的正整

,都有,那么称为反素数。

有两个特点:

1.一个反素数的质因子必是从2开始的质数

2.如果,那么必有

最常见的问题如下:

(1)给定一个数,求一个最小的正整数,使得的约数个数为

(2)求出中约数个数最多的这个数

即是通过搜索建立一个搜索树,递归出合适的所有的情况,再加上剪枝。

ZOJ2562

题意:

给定一个数N,求小于等于N的所有数当中,约数最多的一个数,如果存在多个这样的数,输出其中最大的一个。

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <time.h>
#define N 10100
typedef long long ll;
using namespace std;
ll maxs,allnum;
ll n;
int prim[16] = {1,2,3,5,7,11,13,17,19,23,29,31,37,41,43,47}; void dfs(ll num,ll k,ll sum,ll limit)
{
if(sum > maxs)
{
maxs = sum;
allnum = num;
} if(sum == maxs && allnum > num )
allnum = num;
ll temp = num;
if(k > 15)
return ;
for(int i= 1;i <= limit;i++)
{
if(temp*prim[k] > n)
break;
dfs(temp*= prim[k],k+1,sum*(i+1),i);
}
} int main()
{
while(cin>>n)
{
maxs = 0;
allnum = n;
dfs(1,1,1,50);
cout<<allnum<<endl;
}
return 0;
}</span>

  

hdu 4542

题意:
给出一个数K,和两个操作,

如果操作是0,就求出一个最小的正整数X,满足X的约数个数为K,

如果操作是1,就求出一个最小的X,满足X的约数个数为X-K。

d来先处理成与i互质的个数。由于d[i] < i,将其处理成d[i]=x,表示有x 个非约数的为i

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <time.h>
#define N 10100
typedef long long ll;
using namespace std;
ll INF = ((ll)1<<62)+1;
int d[50005];
ll maxs,allnum;
ll n,type;
int prim[16] = {2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53}; void ini()
{
for(int i = 1; i <= 50005; i++) d[i] = i;
for(int i = 1; i <= 50005; i++)
{
for(int j = i; j <= 50005; j+=i) d[j]--; //滚动数组的形式
if(!d[d[i]]) d[d[i]] = i;
d[i] = 0;
}
}
//如果d[k]=0,表示小于i的所有数中,没有刚好有k个互质数的数
//故将d[k]=i,表示刚好有k个与i互质的数个数最小为i
//d[i] = 0标记刚好有k个互质数的数没有 void dfs(ll sum,ll k,ll num,ll limit)
{
if(num > n) return ;
if(sum < maxs && num == n) maxs = sum;
ll temp = sum;
for(int i= 1; i <= limit; i++)
{
if(num*(i+1) > n || maxs/prim[k] < temp) break; //大于n或者结果大于maxs,不需再考虑
temp *= prim[k];
if(n % (num*(i+1)) == 0)
dfs(temp,k+1,num*(i+1),i);
}
} int main()
{
int T;
int tt = 1;
ini();
scanf("%d",&T);
while(T--)
{
scanf("%I64d%I64d",&type,&n);
if(type)
maxs = d[n];
else
{
maxs = INF;
dfs(1,0,1,100); //最初这100是50,,一直错,估计是太小
}
printf("Case %d: ",tt++);
if(maxs == 0)
puts("Illegal");
else if(maxs >= INF)
puts("INF");
else
printf("%I64d\n",maxs);
}
return 0;
}

  

hdu4542 && ZOJ2562(反素数)的更多相关文章

  1. zoj2562 反素数

    /* 这题1 <= n <= 1016,暴力肯定是TLM,所以看了大牛求解小于N的反素数的算法,思路大致是这样的: 性质1:一个反素数的质因子一定是从2开始的若干个连续质数. 因此可以枚举 ...

  2. ZOJ- 2562 反素数使用

    借用了下东北师大ACM的反素数模版. 本来我是在刷线段树的,有一题碰到了反素数,所以学了一下..有反素数的存在,使得一个x ,使得x的约数个数,在1 到 x的所有数里面,是最大的. 这里面还涉及安叔那 ...

  3. 【zoj2562】反素数

    题意:给定一个数N,求小于等于N的所有数当中,约数最多的一个数,如果存在多个这样的数,输出其中最小的一个.(1 <= n <= 10^16) 题目:http://acm.hust.edu. ...

  4. ZOJ-2562 More Divisors 反素数

    题意:给定一个数N,求小于等于N的所有数当中,约数最多的一个数,如果存在多个这样的数,输出其中最大的一个. 分析:反素数定义:对于任何正整数x,其约数的个数记做g(x).例如g(1)=1,g(6)=4 ...

  5. zoj2562:搜索+数论(反素数)

    题目大意:求n以内因子数量最多的数  n的范围为1e16 其实相当于求n以内最大的反素数... 由素数中的 算数基本原理 设d(a)为a的正因子的个数,则 d(n)=(a1+1)(a2+1)..... ...

  6. poj 2886 线段树的更新+反素数

    Who Gets the Most Candies? Time Limit: 5000 MS Memory Limit: 0 KB 64-bit integer IO format: %I64d , ...

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

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

  8. Prime & 反素数plus

    题意: 求因数个数为n的最小正整数k. n<=10^9输出其唯一分解形式 SOL: 模拟题,一眼看过去有点惊讶...这不是我刚看过的反素数吗... 咦数据怎么这么大,恩搞个高精吧... 于是T了 ...

  9. BZOJ 1053 & 反素数

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

随机推荐

  1. c语言博客第二次作业

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

  2. 团队开发---”我爱淘“校园二手书店 NABC分析

    本项目特点之一:可预订 N:对于一些抢手的书可以提前预定,避免学生买不到书 A:网上下单,通过手机便捷购物 B:使得订书更加方便快捷 C:二手书摊.网上书店 团队成员:杨广鑫.郭健豪.李明.郑涛

  3. C++智能指针(auro_ptr...)

    写的很好,忍不住转了: 博文原址:http://blog.csdn.net/xt_xiaotian/article/details/5714477 一.简介 由于 C++ 语言没有自动内存回收机制,程 ...

  4. 源端控制的OpenFlow数据面

    OpenFlow 交换机一般采用 TCAM 存储和查找流表,从而带来了扩展性.成本和能耗的问题.TCAM 成本和能耗过高,存储容量有限,一般交换机中的 TCAM 仅能存储几千条流表项,对 OpenFl ...

  5. navicate连接不上阿里云mysql

    一 用xshell连接进入服务器: 二 使用命令连接mysql mysql -uroot -p 三 更新权限 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDE ...

  6. 1290 - The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

    解决问题:windows下:修改my.ini 在[mysqld]内加入secure_file_priv = linux下:修改my.cnf 在[mysqld]内加入secure_file_priv = ...

  7. springboot多模块项目下,子模块调用报错:程序包xxxxx不存在

    今天在用springboot搭建多模块项目,结构中有一个父工程Parent  一个通用核心工程core 以及一个项目工程A 当我在工程A中引入core时,没有问题,maven install正常 当我 ...

  8. Spring知识点回顾(04)el 和资源使用

    注入普通字符 注入操作系统属性 注入表达式运算结果 注入其他bean属性 注入文件内容 注入网址内容 注入属性文件

  9. Let's Encrypt,免费好用的 HTTPS 证书

    很早之前我就在关注 Let's Encrypt 这个免费.自动化.开放的证书签发服务.它由 ISRG(Internet Security Research Group,互联网安全研究小组)提供服务,而 ...

  10. 重启网卡报错:Device eth0 does not seem to be present

    ifconfig...没有看到eth0..然后重启网卡又报下面错误. 故障现象: service network restartShutting down loopback insterface:  ...