hdu4542 && ZOJ2562(反素数)
反素数:
对于任何正整数,其约数个数记为
,例如
,如果某个正整数
满足:对任意的正整
数,都有
,那么称
为反素数。
有两个特点:
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(反素数)的更多相关文章
- zoj2562 反素数
/* 这题1 <= n <= 1016,暴力肯定是TLM,所以看了大牛求解小于N的反素数的算法,思路大致是这样的: 性质1:一个反素数的质因子一定是从2开始的若干个连续质数. 因此可以枚举 ...
- ZOJ- 2562 反素数使用
借用了下东北师大ACM的反素数模版. 本来我是在刷线段树的,有一题碰到了反素数,所以学了一下..有反素数的存在,使得一个x ,使得x的约数个数,在1 到 x的所有数里面,是最大的. 这里面还涉及安叔那 ...
- 【zoj2562】反素数
题意:给定一个数N,求小于等于N的所有数当中,约数最多的一个数,如果存在多个这样的数,输出其中最小的一个.(1 <= n <= 10^16) 题目:http://acm.hust.edu. ...
- ZOJ-2562 More Divisors 反素数
题意:给定一个数N,求小于等于N的所有数当中,约数最多的一个数,如果存在多个这样的数,输出其中最大的一个. 分析:反素数定义:对于任何正整数x,其约数的个数记做g(x).例如g(1)=1,g(6)=4 ...
- zoj2562:搜索+数论(反素数)
题目大意:求n以内因子数量最多的数 n的范围为1e16 其实相当于求n以内最大的反素数... 由素数中的 算数基本原理 设d(a)为a的正因子的个数,则 d(n)=(a1+1)(a2+1)..... ...
- poj 2886 线段树的更新+反素数
Who Gets the Most Candies? Time Limit: 5000 MS Memory Limit: 0 KB 64-bit integer IO format: %I64d , ...
- 【POJ2886】Who Gets the Most Candies?-线段树+反素数
Time Limit: 5000MS Memory Limit: 131072K Case Time Limit: 2000MS Description N children are sitting ...
- Prime & 反素数plus
题意: 求因数个数为n的最小正整数k. n<=10^9输出其唯一分解形式 SOL: 模拟题,一眼看过去有点惊讶...这不是我刚看过的反素数吗... 咦数据怎么这么大,恩搞个高精吧... 于是T了 ...
- BZOJ 1053 & 反素数
题意: 反素数,膜一篇GOD's Blog...http://blog.csdn.net/ACdreamers/article/details/25049767 此文一出,无与争锋... CODE: ...
随机推荐
- Beta预备会议
1. 讨论组长是否重选的议题和结论. 我们小组决定组长更换为林洋洋同学,他Web开发经验比较丰富,对任务的分配会更加明确,由于上一阶段中存在进度偏慢的问题,我们希望在Beta阶段通过更好的分工安排来保 ...
- MySQL 自关联查询
定义表areas,结构如下 id atitle pid 因为省没有所属的省份,所以可以填写为null 城市所属的省份pid,填写省所对应的编号id 这就是自关联,表中的某一列,关联了这个表中的另外一列 ...
- github感悟
刚学GitHub进入网页全英文的,感觉很惊讶,自己竟然要在全英文的网站上学习,虽然是英文的但并不感觉有压力,可能之前用eclipse就是全英文的现在除了惊讶,没太多的想法.然后就是我的GitHub地址 ...
- 推荐net开发cad入门阅读代码片段
转载自 Cad人生 的博客 链接:http://www.cnblogs.com/cadlife/articles/2668158.html 内容粘贴如下,小伙伴们可以看看哦. using Syst ...
- jiVMware的网络配置Linux
需求需要配置VMware的虚拟Linux的ip以达到本地可以访问,而且虚拟机Linux可以上网: 第一方案:选择桥接模式 思路:因为桥接可以,使得虚拟机Linux把本地当做一座桥一样连接到路由器,然后 ...
- Mego(1) - NET中主流ORM框架性能对比
从刚刚开始接触ORM到现在已有超过八年时间,用过了不少ORM框架也了解了不少ORM框架,看过N种关于ORM框架的相关资料与评论,各种言论让人很难选择.在ORM的众多问题中最突出的问题是关于性能方面的问 ...
- 使用HTML5视频事件示例
<!DOCTYPE html > <html > <head> <title>Video events example</title> &l ...
- wpf研究之道——datagrid控件分页
这是我们的datagrid分页效果图,有上一页,下一页,可以跳到任何一页.当页码比较多的时候,只显示几页,其余用点点,界面实现如下: <!--分页--> <StackPanel Or ...
- SpringCloud的应用发布(二)vmvare+linux,Centos7.0下发布应用
一.运行环境 1.jdk下载安装 地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html 检查是否有老版本jdk 如 ...
- 阿里云API网关(18)请求报文和响应报文
网关指南: https://help.aliyun.com/document_detail/29487.html?spm=5176.doc48835.6.550.23Oqbl 网关控制台: https ...