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