zoj 2562

典型的反素数

对于任何正整数x,其约数的个数记做g(x).例如g(1)=1,g(6)=4.如果某个正整数x满足:对于任意i(0<i<x),都有g(i)<g(x),则称x为反素数·

性质一:一个反素数的质因子必然是从2开始连续的质数.

性质二:p=2^t1*3^t2*5^t3*7^t4.....必然t1>=t2>=t3>=....

#include <iostream>
using namespace std;

typedef long long ll;

int pri[20]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47};

ll n;
ll ans,s;

void dfs (ll num,ll k,ll sum,ll limit){  //num:当前枚举到的数,k:枚举到的第k大的质因子;sum:该数的约数个数;limit:质因子个数上限;
if (sum>s||(sum==s&&num<ans))  //s:结果的约数个数;ans:结果;
s=sum,ans=num;
if (k>14)
return ;
for (int i=1;i<=limit;i++){
num*=pri[k];
if (num>n)
break ;
dfs (num,k+1,sum*(i+1),i);

}
return ;
}

int main (){
while (cin>>n){
s=0;
dfs (1,0,1,50);
cout<<ans<<endl;
}
return 0;
}

zoj 2562,布布扣,bubuko.com

时间: 2024-10-28 16:00:15

zoj 2562的相关文章

ZOJ 2562 More Divisors(高合成数)

ZOJ 2562 More Divisors(高合成数) ACM 题目地址:ZOJ 2562 More Divisors 题意: 求小于n的最大的高合成数,高合成数指一类整数,不论什么比它小的自然数的因子数目均比这个数的因子数目少. 分析: 网上都叫它反素数,事实上我查了一下,翻素数应该是正着写倒着写都是素数的素数.这个应该叫高合成数,见Wikipedia: Highly composite number 高合成数有下面特征: where p1<p2<?<pk are prime, an

ZOJ 2562 反素数

在讲解反素数之前,我们先来看反素数的概念. 反素数的定义:对于任何正整数,其约数个数记为,例如,如果某个正整数满足:对任意的正整 数,都有,那么称为反素数. 从反素数的定义中可以看出两个性质: (1)一个反素数的所有质因子必然是从2开始的连续若干个质数,因为反素数是保证约数个数为的这个数尽量小 (2)同样的道理,如果,那么必有 在ACM竞赛中,最常见的问题如下: (1)给定一个数,求一个最小的正整数,使得的约数个数为 (2)求出中约数个数最多的这个数 从上面的性质中可以看出,我们要求最小的,它的

ZOJ 2562 HDU 4228 反素数

反素数: 对于任何正整数x,起约数的个数记做g(x).例如g(1)=1,g(6)=4. 如果某个正整数x满足:对于任意i(0<i<x),都有g(i)<g(x),则称x为反素数. ZOJ 2562 反素数 因为写了POJ 2886的线段树,然后里面有反素数,以前没遇到过,所以先搞这两题普及一下知识再说. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm&

Zoj 2562 More Divisors (反素数)

http://blog.csdn.net/whyorwhnt/article/details/19208535 http://blog.sina.com.cn/s/blog_893f611401016h84.html 看了老半天了,还是没完全看懂,暂搁置 756的约数个数: 756=2^2*3^3*7^1 (2+1)*(3+1)*(1+1)=24 这个逻辑我是懂的,算法还是没太明白 是不是要先去看些基础些的东西!!

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

Who Gets the Most Candies? Time Limit: 5000 MS Memory Limit: 0 KB 64-bit integer IO format: %I64d , %I64u Java class name: Main [Submit] [Status] [Discuss] Description N children are sitting in a circle to play a game. The children are numbered from

概率dp ZOJ 3640

Help Me Escape Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu Submit Status Practice ZOJ 3640 Appoint description:  System Crawler  (2014-10-22) Description Background     If thou doest well, shalt thou not be accepted? an

zoj 2156 - Charlie&#39;s Change

题目:钱数拼凑,面值为1,5,10,25,求组成n面值的最大钱币数. 分析:dp,01背包.需要进行二进制拆分,否则TLE,利用数组记录每种硬币的个数,方便更新. 写了一个 多重背包的 O(NV)反而没有拆分快.囧,最后利用了状态压缩优化 90ms: 把 1 cents 的最后处理,其他都除以5,状态就少了5倍了. 说明:貌似我的比大黄的快.(2011-09-26 12:49). #include <stdio.h> #include <stdlib.h> #include <

ZOJ 1718 POJ 2031 Building a Space Station 修建空间站 最小生成树 Kruskal算法

题目链接:ZOJ 1718 POJ 2031 Building a Space Station 修建空间站 Building a Space Station Time Limit: 2 Seconds      Memory Limit: 65536 KB You are a member of the space station engineering team, and are assigned a task in the construction process of the statio

ZOJ 3607 Lazier Salesgirl (贪心)

Lazier Salesgirl Time Limit: 2 Seconds      Memory Limit: 65536 KB Kochiya Sanae is a lazy girl who makes and sells bread. She is an expert at bread making and selling. She can sell the i-th customer a piece of bread for price pi. But she is so lazy