列表

详情


NC220349. E捡贝壳

描述

小明来到一片海滩上,他很喜欢捡贝壳,但他只喜欢质量为x的倍数的贝壳。
贝壳被排列成一条直线,下标从1到n编号,小明打算从编号为区间的贝壳中,捡起所有他喜欢的贝壳。你能帮他计算出他能捡多少贝壳吗。
给出一个大小为的数组,下标从1到n编号,a_1,a_2,...a_n)表示贝壳的质量。
给出次询问,每次询问包含3个整数,对于每次询问,输出一行整数,表示这次询问中能捡到的贝壳数。

输入描述

第一行给出两个整数n和q,含义如上所示。

第二行给出n个整数表示a_1,a_2,...a_n

接下来q行,每行3个整数l,r,x,含义如上所示

输出描述

对于每次询问输出该次询问中能捡到的贝壳数

示例1

输入:

5 3
1 2 3 4 5
1 3 2
1 5 3
2 5 4

输出:

1
1
1

说明:


示例2

输入:

10 3
5532 24380 19363 11022 23965 22383 27049 22357 30453 7451
1 6 2
3 10 10
1 10 9

输出:

3
0
1

说明:


原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++ 解法, 执行用时: 162ms, 内存消耗: 4924K, 提交时间: 2021-09-11 21:31:09

#include<bits/stdc++.h>
using namespace std;
vector<int>v[100006];
int n,r,l,a,q,i;
int main()
{
	cin>>n>>q;
	for(i=1;i<=n;i++)
	{
		cin>>a;
		v[a].push_back(i);
	} int d;
	while(q--)
    { int ans=0;
    	cin>>l>>r>>d;
    	for(i=d;i<=1e5;i+=d)
    	{
    		for(auto j : v[i] )
    		ans+=j>=l&&j<=r;
		}
		cout<<ans<<endl;
	}
}

上一题