题目要求是求出a!/b!(a>=b)的结果,让其不断做除法,最多能做多少次。这个问题首先可以转化为求a!中所有质因子个数-b!中所有质因子个数。以前做过一道快速求某个阶乘对一个素数的因子个数的题(http://www.cnblogs.com/LukeStepByStep/p/5889679.html),然后就跑偏了,怎么写都得遍历素数表。后来发现,对于枚举所有素数,可以在生成素数表的过程中把每个数对于所有素数的因子个数求出来。然后a!的素数因子个数又可以通过前缀和来表示,这个问题就变得简单了。

教训啊,有些问题稍微变动一下,最优解的思路都是不同的,要灵活变通。

#include <iostream>
#include <vector>
using namespace std;
bool ps[];
int pre[];
vector<int> su;
int cal(int j,int i)
{
int cnt=;
int temp=j;
while(j%i==)
cnt++,j/=i; return cnt;
}
int main()
{
cin.sync_with_stdio(false);
int t;
fill(ps,ps+,true);
fill(pre,pre+,);
for(int i=;i<;i++)
{
if(ps[i])
{
pre[i]=;
su.push_back(i);
for(int j=i*;j<;j+=i)
{ pre[j]+=cal(j,i),ps[j]=false; } }
}
//cout<<pre[6]<<endl;
pre[]=pre[]=;
for(int i=;i<;i++)
pre[i]+=pre[i-];
cin>>t; while(t--)
{
int a;
int b;
cin>>a>>b;
cout<<pre[a]-pre[b]<<endl;
//cout<<p2<<endl;
}
return ;
}

51Nod-1441 士兵的数字游戏的更多相关文章

  1. 51nod 1441:士兵的数字游戏

    1441 士兵的数字游戏 题目来源: CodeForces 基准时间限制:4 秒 空间限制:131072 KB 分值: 40 难度:4级算法题  收藏  取消关注 两个士兵正在玩一个游戏,游戏开始的时 ...

  2. 51nod 1441 欧拉筛法

    1441 士兵的数字游戏 题目来源: CodeForces 基准时间限制:6 秒 空间限制:131072 KB 分值: 40 难度:4级算法题  收藏  关注 两个士兵正在玩一个游戏,游戏开始的时候, ...

  3. C语言猜数字游戏

    猜数字游戏,各式各样的实现方式,我这边提供一个实现方式,希望可以帮到新手. 老程序猿就不要看了,黑呵呵 源代码1 include stdio.h include stdlib.h include ti ...

  4. 不一样的猜数字游戏 — leetcode 375. Guess Number Higher or Lower II

    好久没切 leetcode 的题了,静下心来切了道,这道题比较有意思,和大家分享下. 我把它叫做 "不一样的猜数字游戏",我们先来看看传统的猜数字游戏,Guess Number H ...

  5. java 猜数字游戏

    作用:猜数字游戏.随机产生1个数字(1~10),大了.小了或者成功后给出提示. 语言:java 工具:eclipse 作者:潇洒鸿图 时间:2016.11.10 >>>>> ...

  6. 【原创Android游戏】--猜数字游戏Version 0.1

    想当年高中时经常和小伙伴在纸上或者黑板上或者学习机上玩猜数字的游戏,在当年那个手机等娱乐设备在我们那还不是很普遍的时候是很好的一个消遣的游戏,去年的时候便写了一个Android版的猜数字游戏,只是当时 ...

  7. 【原创Android游戏】--猜数字游戏V1.1 --数据存储,Intent,SimpleAdapter的学习与应用

    --------------------------------------------------------------- V0.1版本 上次做完第一个版本后,发现还有一些漏洞,并且还有一些可以添 ...

  8. NOIP2003pj数字游戏[环形DP]

    题目描述 丁丁最近沉迷于一个数字游戏之中.这个游戏看似简单,但丁丁在研究了许多天之后却发觉原来在简单的规则下想要赢得这个游戏并不那么容易.游戏是这样的,在你面前有一圈整数(一共n个),你要按顺序将其分 ...

  9. Codevs 1229 数字游戏

    1229 数字游戏  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 白银 Silver     题目描述 Description Lele 最近上课的时候都很无聊,所以他发明了 ...

随机推荐

  1. Windows操作系统下安装Ubuntu虚拟机

    认识VMware虚拟机 VMware(虚拟机)是指通过软件模拟的具有完整硬件系统功能的.运行在一个完全隔离环境中的完整计算机系统,它能在Windows系统上虚拟出多个计算机,每个虚拟计算机可以独立运行 ...

  2. (转) The Incredible PyTorch

    转自:https://github.com/ritchieng/the-incredible-pytorch The Incredible PyTorch What is this? This is ...

  3. SHOI 2017 相逢是问候(扩展欧拉定理+线段树)

    题意 https://loj.ac/problem/2142 思路 一个数如果要作为指数,那么它不能直接对模数取模,这是常识: 诸如 \(c^{c^{c^{c..}}}\) 的函数递增飞快,不是高精度 ...

  4. @PathVariable与@RequestBody的区别,及前段请求接口的写法。

    @PathVariable 1:接受参数时,地址栏为:/{args1}/{args2} 2:用法:(@PathVariable(value = "args")Long  id) 3 ...

  5. arcgis 要素服务增删改查

    两种方式: 第一种 要素服务的增删改操作,在ArcGIS API for JS中给我们提供了三个类用于要素的增Add,删Delete,改Update 添加draw和要素服务 //用于操作的要素图层,注 ...

  6. shp与json互转(转载)

    转自:http://blog.sina.com.cn/s/blog_673c98be0102v78i.html 对于搞GIS开发的,这2种数据格式太重要了. 一.shp转json 这个要容易些,方法也 ...

  7. C# 缓存操作类

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.W ...

  8. React-navigation物理返回键提示效果BackHandler

    componentWillMount(){    BackHandler.addEventListener('hardwareBackPress', this.onBackAndroid); } co ...

  9. unity3d 加载优化建议 总结 from 侑虎科技

    第一部分 我们对于纹理资源的加载建议如下: 1.严格控制RGBA32和ARGB32纹理的使用,在保证视觉效果的前提下,尽可能采用“够用就好”的原则,降低纹理资源的分辨率,以及使用硬件支持的纹理格式. ...

  10. 使用Coding体验小记

    https://coding.net/ 写了些小程序后放在github上托管,并用gitpages展示. 今天发现用git pages展示的网页网络特别不稳定,时常会出现网页打不开的现象. 之前一直通 ...