博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
「日常训练」 Soldier and Number Game (CFR304D2D)
阅读量:5011 次
发布时间:2019-06-12

本文共 1332 字,大约阅读时间需要 4 分钟。

题意 (Codeforces 546D)

给定一个数x=a!b!x=a!b!的形式,问其中有几个质因数。

分析

数据规模略大,故先作预处理。预处理的时候运用了前缀和和记忆化搜索的思想。

之后就比较简单了。

代码

#include 
#define MP make_pair#define PB push_back#define fi first#define se second#define ZERO(x) memset((x), 0, sizeof(x))#define ALL(x) (x).begin(),(x).end()#define rep(i, a, b) for (int i = (a); i <= (b); ++i)#define per(i, a, b) for (int i = (a); i >= (b); --i)#define QUICKIO \ ios::sync_with_stdio(false); \ cin.tie(0); \ cout.tie(0);using namespace std;using ll = long long;using ull = unsigned long long;using pi = pair
;const int MAXN=5000000;bool isPrime[MAXN+5];ll cnt[MAXN+5];ll getCnt(int x){ if(cnt[x]!=-1) return cnt[x]; else { if(isPrime[x]) return cnt[x]=1; for(int i=2;i*i<=x;++i) { if(isPrime[i] && x%i==0) return cnt[x]=getCnt(x/i)+1; } }}ll sum[MAXN+5];int main(){QUICKIO memset(isPrime,true,sizeof(isPrime)); ZERO(sum); isPrime[0]=isPrime[1]=false; rep(i,2,MAXN) { if(isPrime[i]) { for(int j=i*2;j<=MAXN;j+=i) isPrime[j]=false; } } memset(cnt,-1,sizeof(cnt)); cnt[1]=0; rep(i,1,MAXN) { sum[i]=sum[i-1]+getCnt(i); //cout<
<

转载于:https://www.cnblogs.com/samhx/p/9652068.html

你可能感兴趣的文章
删除U盘时提示无法停止‘通用卷’设备的解决方法!!不要每次都硬拔了,对电脑有不小的损害!!!...
查看>>
Java中接口与接口和类之间的关系
查看>>
芯片TPS70925
查看>>
linux shell 发送email 附件
查看>>
人群密度估计 CrowdCount
查看>>
JSON.parse()和JSON.stringify()
查看>>
.net 常用正则表达式
查看>>
Java泛型中的标记符含义:
查看>>
初遇GitHub
查看>>
[C# 网络编程系列]专题八:P2P编程
查看>>
Jsの练习-数组常用方法 -forEach()
查看>>
动态绑定treeview的方法
查看>>
jvm参数
查看>>
3-1 案例环境初始化
查看>>
读《构建之法》第四章和十七章有感
查看>>
01背包
查看>>
开发一个12306网站要多少钱?技术分析12306合格还是不合格
查看>>
Selenium 入门到精通系列:六
查看>>
HTTP与TCP的区别和联系
查看>>
android 实现2张图片层叠效果
查看>>