当前位置: 首页 > news >正文

「日常训练」 Soldier and Number Game (CFR304D2D)

题意 (Codeforces 546D)

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

分析

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

代码

#include <bits/stdc++.h>
#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<int,int>;
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<<sum[i]<<endl;
    }
    //rep(i,1,100) cout<<sum[i]<<" "; cout<<endl;
    int t;
    scanf("%d",&t);
    rep(i,1,t) 
    {
        int a,b;
        scanf("%d%d",&a,&b);
        printf("%lld\n",sum[a]-sum[b]);
        //cout<<" "<<a<<" "<<sum[a]<<" "<<b<<" "<<sum[b]<<endl;
    }
    //rep(i,1,100) cout<<sum[i]<<" "; cout<<endl;
    return 0;
}

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

相关文章:

  • 变量的经典
  • 从cookies 获取token
  • python - Linux C调用Python 函数
  • IIS 7 应用程序池自动回收关闭的解决方案
  • FullScreenPopNavigationController
  • tp5多条件查询
  • 本地电脑与远程服务器之间不能复制粘贴解决方法
  • 八 原型prototype和__proto__
  • SQL存储过程解密
  • 数据库可视化工具简介以及pymysql的使用
  • Mysql-慢查询日志
  • ztree异步加载树节点
  • 分页插件PageHelper配置步骤(mybatis)
  • 快速排序的C++版
  • 新建存过,查询表结构的方法。
  • [NodeJS] 关于Buffer
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • Java面向对象及其三大特征
  • JS 面试题总结
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • web标准化(下)
  • 高程读书笔记 第六章 面向对象程序设计
  • 简单易用的leetcode开发测试工具(npm)
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 嵌入式文件系统
  • 人脸识别最新开发经验demo
  • 如何设计一个比特币钱包服务
  • 数据科学 第 3 章 11 字符串处理
  • 《码出高效》学习笔记与书中错误记录
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​Linux·i2c驱动架构​
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • #include<初见C语言之指针(5)>
  • (C语言)字符分类函数
  • ******之网络***——物理***
  • ****Linux下Mysql的安装和配置
  • .gitignore文件—git忽略文件
  • .Net Core 中间件验签
  • .NET Standard 支持的 .NET Framework 和 .NET Core
  • .Net Winform开发笔记(一)
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • .net中生成excel后调整宽度
  • .net中应用SQL缓存(实例使用)
  • @RequestMapping用法详解
  • [20170705]diff比较执行结果的内容.txt
  • [AMQP Connection 127.0.0.1:5672] An unexpected connection driver error occured
  • [APUE]进程关系(下)
  • [BUG] Hadoop-3.3.4集群yarn管理页面子队列不显示任务
  • [C#]winform制作圆形进度条好用的圆环圆形进度条控件和使用方法
  • [C/C++]数据结构 循环队列
  • [C]编译和预处理详解
  • [CQOI 2011]动态逆序对
  • [C语言]——分支和循环(4)