P5190 [COCI2009-2010#5] PROGRAM 题解 C++代码实现 函数调用

开始时,seq 数组已清零。请注意 seq 数组的第一个元素的下标是 0 而非 1。

void something (int jump) {
  for (int i = 0; i < N; i += jump)
    ++seq[i];
}

#include <cstdio>
#include <cctype>
typedef unsigned long long ull;
 
inline int Getint()
{
    register int x=0,c;
    while(!isdigit(c=getchar()));
    for(;isdigit(c);c=getchar())x=x*10+(c^48);
    return x;
}
 
int n,k,q;
int c[1000005],a[1000005];
ull s[1000005];
 
int main()
{
    n=Getint(),k=Getint();
    for(int i=1;i<=k;++i)++c[Getint()];
    for(register int i=1;i<=n;++i)if(c[i])
        for(register int j=1;j<=n;j+=i)a[j]+=c[i];
    for(register int i=1;i<=n;++i)s[i]=s[i-1]+a[i];
    for(register int q=Getint(),l,r;q--;)
        l=Getint(),r=Getint(),printf("%llu\n",s[r+1]-s[l]);
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值