借用了下东北师大ACM的反素数模版。

本来我是在刷线段树的,有一题碰到了反素数,所以学了一下。。有反素数的存在,使得一个x ,使得x的约数个数,在1 到 x的所有数里面,是最大的。

这里面还涉及安叔那天讲的求一个数的约数个数,用其素数因子的指数相乘即可。

这是东北师大的模版:

 typedef __int64 INT;
INT bestNum; //约数最多的数
INT bestSum; //约数最多的数的约数个数
const int M=; //反素数的个数
INT n=;//求n以内的所有的反素数
INT rprim[M][];
//2*3*5*7*11*13*17>n,所以只需考虑到17即可
INT prim[]={,,,,,,,,,}; //当前走到num这个数,接着用第k个素数,num的约数个数为sum,
//第k个素数的个数上限为limit
void getNum(INT num,INT k,INT sum,INT limit) {
if(num>n)return;
if(sum>bestSum){
bestSum = sum;
bestNum = num;
}else if(sum == bestSum && num < bestNum){ //约数个数一样时,取小数
bestNum = num;
}
if(k>=) return; //只需考虑到素数17,即prim[6] for(INT i=,p=;i<=limit;i++){ //素数k取i个
p*=prim[k];
if(p>n||p*num>n) return; //这里也要判断一下,否则老是爆掉。
getNum(num*p,k+,sum*(i+),i);
}
} INT log2(INT n){ //求大于等于log2(n)的最小整数
INT i = ;
INT p = ;
while(p<n){
p*=;
i++;
}
return i;
} int getrprim(){//反素数的个数
int i = ;
while(n>){
bestNum = ;
bestSum = ;
getNum(,,,log2(n));
n = bestNum - ;
rprim[i][]=bestNum;
rprim[i][]=bestSum;
i++;
}
return i;
}

ZOJ 2562的代码

#include <iostream>
#include <cstdio>
typedef long long ll;
using namespace std;
ll prime[]={,,,,,,,,,,,,,,,};
ll antinum;
ll antisum;
ll antiprime[][];
ll maxn;
ll log2(ll n)
{
ll i=,p=;
while (p<n)
{
p*=;
i++;
}
return i;
}
void getanti(ll num,ll sum,ll k,ll limit)
{ if (num > maxn) return;
//cout<<num<<endl;
if (sum>antisum) {antisum=sum;antinum=num;}
else
if (sum==antisum&&num<antinum) antinum=num;
if (k>) return;
for (ll i=,p=;i<=limit;i++)
{
p*=prime[k];
if (p>maxn||num*p>maxn) return;
getanti(num*p,sum*(i+),k+,i);
}
}
void getnum()
{
antinum=;
antisum=;
//cout<<maxn<<endl;
getanti(,,,); }
int main()
{
//printf("%I64d\n",maxn);
// ll cur=getnum();
ll t;
//cout<<cur<<endl;
// for (int i=cur-1;i>=0;i--)
//cout<<antiprime[i][0]<<endl;
while (scanf("%lld",&t)!=EOF)
{
maxn=t;
getnum();
printf("%lld\n",antinum);
}
return ;
}

最新文章

  1. 【BZOJ-3270】博物馆 高斯消元 + 概率期望
  2. 如何在mac本上安装android sdk 避免被墙
  3. AIDMA VS AISAS vs ISMAS 营销法则
  4. lua如何构造类
  5. CDOJ 1431 不是图论 Label:Tarjan || Kosarajn
  6. node.js 学习书籍推荐
  7. ylbtech-LanguageSamples-Struct(结构)
  8. [转]DllMain中不当操作导致死锁问题的分析&mdash;&mdash;DllMain中要谨慎写代码(完结篇)
  9. FreeCodeCamp-JS基础部分
  10. 【HDOJ】3487 Play with Chain
  11. OpenStreetMap(OSM) for developers
  12. HTML高级选项卡(1)————表标签
  13. iOS 开发百问(6)
  14. ArcEngine关于单位转换示例
  15. 事件驱动的Python实现
  16. 1、微信小程序----弹幕的实现(无后台)
  17. C# 多线程、异步线程、线程池相关知识
  18. Robot Framework学习笔记(一)------环境搭建
  19. 33.APP后端处理视频的方案
  20. mskitten

热门文章

  1. 学会C#
  2. android studio3.1 添加闪屏页面(启动欢迎界面)(例子简单无BUG)
  3. MapReduce On Yarn的执行流程
  4. 剑指offer自学系列(五)
  5. Golang的运算符-算数运算符
  6. maven集成SSM项目,Tomcat部署运行——SSM整合框架搭建(二)之问题
  7. nodejs - fs模块 - 文件操作
  8. 十三、JavaScript之跨多行的变量申明
  9. 这篇干货让你在零点前完成学术Essay写作
  10. 关于c++静态类的说法