码迷,mamicode.com
首页 > 其他好文 > 详细

CodeForces 546D Soldier and Number Game 打表(求质因子个数)

时间:2015-08-01 17:16:27      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:

  题目:戳我

 

  题意:题意看懂了上面的一大串英文之后其实很简单,就是给你一个正整数n,问你n有多少个质因子,不过这里n是通过a!/b!给定的,也就是说n=(a!/b!);

  分析:由于这里1 ≤ b ≤ a ≤ 5 000 000,数据很大,所以简单暴力一定超时,具体看代码。

 1 #include <iostream>
 2 #include <cstdio>
 3 using namespace std;
 4 const int M = 5e6+5;
 5 
 6 int t;  //测试组数
 7 int num[M] = {0};  //打表,将n的质因子个数存到num[n]中
 8 int sum[M] = {0};  //sum[i]表示从num[1]到num[i]的和
 9 void getsum( )  {
10     num[1] = 1;
11     num[2] = 1;
12     for( int i=2; i<M; i++ )    {
13         if( num[i] > 1 )  //判断i是否为素数
14             continue;
15         num[i] = 1;
16         for( int j=2; j*i<M; j++ )  {
17             num[j*i] = num[j] + 1;
18         }
19     }
20     for( int i=1; i<M; i++ )
21         sum[i] = sum[i-1] + num[i];
22 }
23 
24 int main()
25 {
26     getsum();
27     scanf("%d", &t );
28     while( t-- )    {
29         int a, b;
30         scanf("%d %d", &a, &b );
31         printf("%d\n", sum[a] - sum[b] );
32     }
33 }

 

CodeForces 546D Soldier and Number Game 打表(求质因子个数)

标签:

原文地址:http://www.cnblogs.com/TaoTaoCome/p/4694239.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!