博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codefo 546D. Soldier and Number Game
阅读量:5052 次
发布时间:2019-06-12

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

题意:输入a,b,n=a!/b!,求n 最多除以多少次变为1。

分析:相当于求n有多少个质因子。即求从b+1到a之间的数字质因子和为多少。

 

#include 
#include
#include
using namespace std;int v[5000005];//v[i]记录i是否为质数int prime[50000];//素数表int num;int mini[5000005];//mini[i]表示i的最小质因子。int ans[5000005];//ans[i]表示i有多少个质因子。int answer[5000005];//answer[i]表示从1到i共有多少个质因子void init(){ memset(v,0,sizeof(v)); num=0; for(int i=2;i<=5000000;i++) mini[i]=i; for(int i=2;i<=5000000;i++) { if(v[i]==0) { prime[++num]=i; } for(int j=1;j<=num&&i*prime[j]<=5000000;j++) { int t=i*prime[j]; v[t]=1; if(mini[t]>prime[j]) mini[t]=prime[j]; } } ans[2]=1; for(int i=3;i<=5000000;i++) { ans[i]=ans[i/mini[i]]+1;//ans[i]为i除以他的最小质因子的质因子数加上1 } answer[1]=0; for(int i=2;i<=5000000;i++) { answer[i]=answer[i-1]+ans[i]; }}int main(){ int t,a,b; scanf("%d",&t); init(); while(t--) { scanf("%d%d",&a,&b); printf("%d\n",answer[a]-answer[b]); } return 0;}

 

转载于:https://www.cnblogs.com/mengzhong/p/5003237.html

你可能感兴趣的文章
返回代码hdu 2054 A==B?
查看>>
Flink独立集群1
查看>>
iOS 8 地图
查看>>
20165235 第八周课下补做
查看>>
[leetcode] 1. Two Sum
查看>>
iOS 日常工作之常用宏定义大全
查看>>
PHP的SQL注入技术实现以及预防措施
查看>>
MVC Razor
查看>>
软件目录结构规范
查看>>
Windbg调试Sql Server 进程
查看>>
linux调度器系列
查看>>
mysqladmin
查看>>
解决 No Entity Framework provider found for the ADO.NET provider
查看>>
SVN服务器搭建和使用(三)(转载)
查看>>
Android 自定义View (三) 圆环交替 等待效果
查看>>
设置虚拟机虚拟机中fedora上网配置-bridge连接方式(图解)
查看>>
HEVC播放器出炉,迅雷看看支持H.265
查看>>
[置顶] Android仿人人客户端(v5.7.1)——人人授权访问界面
查看>>
Eclipse 调试的时候Tomcat报错启动不了
查看>>
【安卓5】高级控件——拖动条SeekBar
查看>>