Zoj 2562 More Divisors
2013-09-06 13:45
316 查看
题意:给定一个数n,求在n以内,一个数的约数最多,并且是最小的一个数。
分析:先把约数看成素因子了,导致算法和思路严重错误。
约数和素因子是不同的。比如12=2^2*3,它的素因子数为2,而约数为6,分别为:1,2,3,4,6,12.
不过,可以总结出约数的个数等于每个数的素因子的幂加1相乘。12=2^2*3. m=(2+1)*(1+1)=3;
其实此题是一个关于反素数的问题,有关反素数:网上有这样的说明:
对于任何正整数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>=....
载自百度.....!
根据分析:题目只有10^16,故素因子越小的会成为最佳结果,故大楷只要15素数就可以了。
分析:先把约数看成素因子了,导致算法和思路严重错误。
约数和素因子是不同的。比如12=2^2*3,它的素因子数为2,而约数为6,分别为:1,2,3,4,6,12.
不过,可以总结出约数的个数等于每个数的素因子的幂加1相乘。12=2^2*3. m=(2+1)*(1+1)=3;
其实此题是一个关于反素数的问题,有关反素数:网上有这样的说明:
定义
对于任何正整数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>=....
载自百度.....!
根据分析:题目只有10^16,故素因子越小的会成为最佳结果,故大楷只要15素数就可以了。
#include<cstdio> #include<cstring> typedef long long LL; using namespace std ; LL Max,best,n; int prime[15]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47}; void dfs(LL sum,LL cur,int k,int t) { if(Max<sum){ Max=sum; best=cur; } if(sum==Max&&cur<best) best=cur; if(k>14) return; LL tmp=cur; for(int i=1;i<=t;i++){ if(tmp*prime[k]>n) break; tmp*=prime[k]; dfs(sum*(i+1),tmp,k+1,i); } } int main() { while(scanf("%lld",&n)!=EOF){ Max=best=1; dfs(1,1,0,50); printf("%lld\n",best); } return 0 ; }
相关文章推荐
- ZOJ_2562_More Divisors(反素数)
- zoj 2562 More Divisors(反素数)
- zoj 2562 More Divisors
- timus 1748 The Most Complex Number zoj 2562 More Divisors
- zoj 2562 More Divisors
- zoj 2562 More Divisors
- ZOJ 2562 More Divisors(高合成数)
- ZOJ 2562 More Divisors 解题报告(反素数)
- zoj 2562 More Divisors(反素数)
- ZOJ 2562 More Divisors(高合成数)
- Zoj 2562 More Divisors (反素数)
- 【ZOJ 2562】 More Divisors
- zoj 2562 More Divisors(反素数)
- Zoj 2562 More Divisors (反素数)
- ZOJ 2562 More Divisors (n以内约数个数最多的最小数)
- zoj 2562 反素数
- zoj 2562 More Divisors
- ZOJ 2562 HDU 4228 反素数
- More Divisors zoj 2562
- ZOJ- 2562 反素数使用