题目大意:

给多个区间的询问,在询问区间内每一个出现的素数去计算所有数中有多少个数能被这个素数整除

然后将所有素数得到的对应值求和

这里因为初始给定的数不超过10000000,最多670000不到的素数

而后面给定的区间到达1e9是没意义的,只要后面超过10000000都按最后一个数表示即可

然后将素数的标号作为树状数组的点,保存对应的点前缀和

 #include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <ctime>
#include <cstdlib>
#include <vector>
#include <algorithm>
using namespace std;
#define ll long long
#define N 10001000
#define M 670000
#define pii pair<int,int>
#define lowbit(x) x&(-x)
int prime[M+] , tot ;
bool check[N+]; void get_prim()
{
for(int i= ; i<=N ; i++){
if(!check[i]) prime[tot++] = i;
for(int j= ; j<tot ; j++){
if((ll)i*prime[j]>N) break;
check[i*prime[j]] = true;
if(i%prime[j]==) break;
}
}
} int Hash1(int x)
{
if(x>) return ; //664579是10000000内素数的数目
int l= , r=tot- , ans=;
while(l<=r){
int m = (l+r)>>;
if(prime[m]>=x){ans = m , r=m-;}
else l=m+;
}
return ans+;
} int Hash2(int x)
{
if(x>) return ;
int l= , r=tot- , ans=;
while(l<=r){
int m = (l+r)>>;
if(prime[m]<=x){ans = m , l=m+;}
else r=m-;
}
return ans+;
} ll sum[M]; void add(int x , int v){for(int i=x ; i<=tot ; i+=lowbit(i)) sum[i] += v;} ll query(int x)
{
ll ret = ;
for(int i=x ; i> ; i-=lowbit(i)) ret+=sum[i];
return ret;
} void fenjie(int x)
{
int mx = (int)sqrt(x+0.5);
for(int i= ; i<tot ; i++){
if(prime[i]*prime[i]>x) break;
if(x%prime[i]==){
// cout<<"in: "<<i<<" "<<prime[i]<<endl;
add(i+ , );
while(x%prime[i]==) x/=prime[i];
}
}
if(x>){
int pos = lower_bound(prime , prime+tot , x)-prime;
add(pos+ , );
}
} int main() {
// freopen("a.in" , "r" , stdin);
// freopen("out.txt" , "w" , stdout);
get_prim();
int n , m , s , t;
while(~scanf("%d" , &n))
{
for(int i= ; i<n ; i++){
int x ;
scanf("%d" , &x);
fenjie(x);
}
scanf("%d" , &m);
while(m--){
scanf("%d%d" , &s , &t);
int p1 = Hash1(s) , p2 = Hash2(t);
// cout<<p1<<" "<<p2<<endl;
printf("%I64d\n" , query(p2)-query(p1-));
}
}
}

Codeforce385C 树状数组+素因子分解的更多相关文章

  1. BZOJ 1103: [POI2007]大都市meg [DFS序 树状数组]

    1103: [POI2007]大都市meg Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2221  Solved: 1179[Submit][Sta ...

  2. bzoj1878--离线+树状数组

    这题在线做很麻烦,所以我们选择离线. 首先预处理出数组next[i]表示i这个位置的颜色下一次出现的位置. 然后对与每种颜色第一次出现的位置x,将a[x]++. 将每个询问按左端点排序,再从左往右扫, ...

  3. codeforces 597C C. Subsequences(dp+树状数组)

    题目链接: C. Subsequences time limit per test 1 second memory limit per test 256 megabytes input standar ...

  4. BZOJ 2434: [Noi2011]阿狸的打字机 [AC自动机 Fail树 树状数组 DFS序]

    2434: [Noi2011]阿狸的打字机 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 2545  Solved: 1419[Submit][Sta ...

  5. BZOJ 3529: [Sdoi2014]数表 [莫比乌斯反演 树状数组]

    3529: [Sdoi2014]数表 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1399  Solved: 694[Submit][Status] ...

  6. BZOJ 3289: Mato的文件管理[莫队算法 树状数组]

    3289: Mato的文件管理 Time Limit: 40 Sec  Memory Limit: 128 MBSubmit: 2399  Solved: 988[Submit][Status][Di ...

  7. 【Codeforces163E】e-Government AC自动机fail树 + DFS序 + 树状数组

    E. e-Government time limit per test:1 second memory limit per test:256 megabytes input:standard inpu ...

  8. 【BZOJ-3881】Divljak AC自动机fail树 + 树链剖分+ 树状数组 + DFS序

    3881: [Coci2015]Divljak Time Limit: 20 Sec  Memory Limit: 768 MBSubmit: 508  Solved: 158[Submit][Sta ...

  9. 树形DP+DFS序+树状数组 HDOJ 5293 Tree chain problem(树链问题)

    题目链接 题意: 有n个点的一棵树.其中树上有m条已知的链,每条链有一个权值.从中选出任意个不相交的链使得链的权值和最大. 思路: 树形DP.设dp[i]表示i的子树下的最优权值和,sum[i]表示不 ...

随机推荐

  1. hdu 4055 && hdu 4489 动态规划

    hdu 4055: 一开始我想的递推方向想得很复杂,看了别人的博客后才醍醐灌顶: 参照他的思路和代码: #include<cstdio> #include<cstring> # ...

  2. BestCoder Valentine's Day Round

    昨晚在开赛前5分钟注册的,然后比赛刚开始就掉线我就不想说了(蹭网的下场……),只好用手机来看题和提交,代码用电脑打好再拉进手机的(是在傻傻地用手机打了一半后才想到的办法). 1001,也就是 hdu ...

  3. Jquery_改变背景颜色

    $(this).addClass("car_check").siblings().removeClass("car_check");//设置全部车辆为选中状态

  4. hiho_1059_string matching content length

    题目大意 两个字符串strA和strB(长度最大为2100),他们中按照顺序有一些公共的子串,且公共子串的长度大于等于3,否则不认为是合法的,比如 abcdef 和 abcxcdef, 按照顺序有合法 ...

  5. ios 给uiview创作遮罩

    mask一定是PNG格式的图像,去掉背景 .jpg格式图片没有alpha values 遮罩是通过图片透明度的信息实现与颜色无关 UIImage*_maskingImage =[UIImage ima ...

  6. Python 练习 11

    #!/usr/bin/python # -*- coding: UTF-8 -*- import math for i in range(10000): #转化为整型值 x = int(math.sq ...

  7. [Jetty] jetty 内存调优

    在start.ini中配置代码如下 -Dcom.sun.management.jmxremote=true -Xmx6144m -XX:PermSize=256M -XX:MaxPermSize=10 ...

  8. Disney English

    项目大体流程是做几个页面的模板,然后后台用html改成phtml 但是后期连模板都要改掉,很多都无法考虑到复用 css很混乱,js已经忘记了

  9. javaSE基础之基本细节注解

    1.  对于多行注释而言,不能进行嵌套注释.....! /* dada /* d adasdas */ */ 只是不被允许的.... 2.对于记事本编程......如果竹类是公有类,则必须保证类名和为 ...

  10. ARM的启动和中断向量表

    启动的方式 对于S3C2440而言,启动的方式有两种,一是Nor Flash方式启动,二是Nand Flash方式启动. 使用Nor Flash方式启动 Nor Flash的地址范围如下 0x0000 ...