给出一个长度为 n(1\leq n\leq 2\cdot 10^5)n(1≤n≤2⋅10 5 ) 的序列 aa (1\leq a_i\leq 10^9)(1≤a i ≤10 9 ),并且保证序列 aa 所有元素乘积 \leq 10^{18}≤10 18 ,求这个序列中满足如下条件的连续子段 [a_l\dots a_r][a l …a r ] 的数量: 令 x=a_l\cdot a_{l+1}\cdot a_{l+2}\dots a_rx=a l ⋅a l+1 ⋅a l+2 …a r ,那么 xx 的末尾恰好有 k(0\leq k\leq 10^9)k(0≤k≤10 9 ) 个零。 输入描述: 第一行包含一个整数 T(1\leq T\leq 10^5)T(1≤T≤10 5 ),表示测试用例的组数。 对于每组测试用例: 第一行包含两个整数 n(1\leq n\leq 2\cdot 10^5)n(1≤n≤2⋅10 5 ) 和 k(0\leq k\leq 10^9)k(0≤k≤10 9 ),表示序列的长度和题目中提到的后导零的数量; 第二行包含 nn 个整数 a_1\dots a_n\ (1\leq a_i\leq 10^9)a 1 …a n (1≤a i ≤10 9 ),表示该序列。 保证对于所有的测试用例,nn 的总和不超过 2\cdot 10^52⋅10 5 。 输出描述: 对于每组测试用例: 仅输出一行,包含一个整数,表示答案。 示例1 输入 复制 2 5 3 125 1 8 1 1 1 0 6 输出 复制 3 1用C++实现此题
时间: 2024-02-11 20:08:08 浏览: 99
```c++
#include <iostream>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;
typedef long long ll;
const int N = 2e5 + 5;
int n, k, a[N], cnt2[N], cnt5[N], t, T;
ll ans;
vector<int> v;
map<int, ll> mp;
int main()
{
cin >> T;
while (T--)
{
cin >> n >> k;
for (int i = 1; i <= n; i++)
{
cin >> a[i];
cnt2[i] = cnt2[i - 1] + __builtin_popcount(a[i]) - __builtin_popcount(a[i] & -a[i]);
cnt5[i] = cnt5[i - 1] + __builtin_popcount(a[i]) - __builtin_popcount((a[i] % 5 == 0 ? a[i] / 5 : a[i]) & -((a[i] % 5 == 0 ? a[i] / 5 : a[i])));
}
v.clear();
mp.clear();
mp[0] = 1;
for (int i = 1; i <= n; i++)
{
if (cnt2[i] >= k || cnt5[i] >= k)
{
ans += mp[cnt2[i] - k] + mp[cnt5[i] - k];
}
if (cnt2[i] <= cnt5[i])
{
if (mp.count(cnt2[i]))
mp[cnt2[i]]++;
else
mp[cnt2[i]] = 1;
}
else
{
if (mp.count(cnt5[i]))
mp[cnt5[i]]++;
else
mp[cnt5[i]] = 1;
}
}
cout << ans << endl;
ans = 0;
}
return 0;
}
```
阅读全文
相关推荐
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)