基础数论-反素数 ural1748
2016-09-05 21:01
267 查看
题意:求最小的0-n中约数个数最多的数,并输出其约数个数。
这道题目需要用到反素数的知识。
首先反素数满足以下性质:
反素数一定为连续的素数相乘;
第k个质因数的幂≥第(k-1)个。
剩下需要做的就只是dfs了。^_^
这道题目需要用到反素数的知识。
首先反素数满足以下性质:
反素数一定为连续的素数相乘;
第k个质因数的幂≥第(k-1)个。
剩下需要做的就只是dfs了。^_^
#include<cstdio> #include<algorithm> #include<cstring> #include<cmath> using namespace std; typedef long long LL; const int INF=1e9; int p[16]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53}; int sum; LL ans,n; void dfs(int dep,int limit,LL tmp,int num){ if(tmp>n) return; if(num>sum){ sum=num; ans=tmp; } if(num==sum && tmp<ans) ans=tmp; for(int i=1;i<=limit;i++){ if(tmp>n/p[dep]){ break; } dfs(dep+1,i,tmp*=p[dep],num*(i+1)); } } int main(){ int kase; scanf("%d",&kase); while(kase--){ scanf("%lld",&n); ans=INF; sum=0; dfs(0,60,1,1); printf("%lld %d\n",ans,sum); } return 0; }
相关文章推荐
- [Asia - Hefei - 2008/2009][B:Discrete Square Roots][数论基础] 还是不是很懂,先转
- 同余(数论基础)
- 数论基础(维诺格拉多夫著,裘光明译) 勘误
- virtual hust 2013.6.20 数论基础题目 D - Just the Facts
- virtual hust 2013.6.20 数论基础题目 C - Multiplying by Rotation
- virtual hust 2013.6.20 数论基础题目 I - Code Refactoring
- 数论基础(维诺格拉多夫著,裘光明译) 勘误
- 数论基础知识归纳
- virtual hust 2013.6.20 数论基础题目 B- Light, more light
- [数论]基础类库、函数库
- 数论基础_线性同余方程
- 数论基础_欧拉函数
- 《数论》3.6习题3------求一元线性同余方程所有解(不是方程组)基础练习例子&&求逆元
- 数论基础_扩展欧几里得算法
- [数论]数论的基础知识——最大公约数、最小公倍数
- 数论基础算法
- 数论基础_欧几里德算法
- 数论基础
- virtual hust 2013.6.20 数论基础题目 F - Pseudo-Random Numbers
- virtual hust 2013.6.21 数论基础题目 G - How many zero's and how many digits ?