给定一个数组,请你编写一个函数,返回元素乘积末尾零数量大于等于的连续子数组数量。 答案可能太大,请将答案对取模再返回。 数组长度不超过。 数组元素、均为不超过的正整数。

区块链毕设网qklbishe.com为您提供问题的解答

给定一个数组,请你编写一个函数,返回元素乘积末尾零数量大于等于给定一个数组,请你编写一个函数,返回元素乘积末尾零数量大于等于的连续子数组数量。    答案可能太大,请将答案对取模再返回。        数组长度不超过。     数组元素、均为不超过的正整数。的连续子数组数量。
答案可能太大,请将答案对给定一个数组,请你编写一个函数,返回元素乘积末尾零数量大于等于的连续子数组数量。    答案可能太大,请将答案对取模再返回。        数组长度不超过。     数组元素、均为不超过的正整数。取模再返回。

数组长度不超过给定一个数组,请你编写一个函数,返回元素乘积末尾零数量大于等于的连续子数组数量。    答案可能太大,请将答案对取模再返回。        数组长度不超过。     数组元素、均为不超过的正整数。

数组元素、给定一个数组,请你编写一个函数,返回元素乘积末尾零数量大于等于的连续子数组数量。    答案可能太大,请将答案对取模再返回。        数组长度不超过。     数组元素、均为不超过的正整数。均为不超过给定一个数组,请你编写一个函数,返回元素乘积末尾零数量大于等于的连续子数组数量。    答案可能太大,请将答案对取模再返回。        数组长度不超过。     数组元素、均为不超过的正整数。的正整数。
class Solution { public:     int mod = 1e9 + 7;     int n = 0;     void func(vector<int>& a, vector<vector<int>>& arr) {         for (int i = 0; i < n; ++i) {             int temp = a[i];             while (temp > 0 && temp % 2 == 0) {                 arr[i][0]++;                 temp /= 2;             }             temp = a[i];             while (temp > 0 && temp % 5 == 0) {                 arr[i][1]++;                 temp /= 5;             }         }     }     int get_ans(vector<vector<int>>& arr, int x) {         long long ans = 0;         int two_num = 0, five_num = 0;         int l = 0, r = 0;         while (r < n) {             two_num += arr[r][0];             five_num += arr[r][1];             while (min(two_num, five_num) >= x) {                 ans += n - r;                 two_num -= arr[l][0];                 five_num -= arr[l][1];                 ++l;             }             ++r;         }         return ans % mod;     }     int getSubarrayNum(vector<int>& a, int x) {         n = a.size();         vector<vector<int>> arr(n, vector<int> (2));         func(a, arr);         return get_ans(arr, x);     } };

乘积末尾0的数量取决于乘积中因子2和因子5的最小值。 所以,要解决这个问题,我们可以先计算一下每个元素包含几个因子2和因子5,并用一个数组arr记录下来。 之后,再用双指针遍历arr数组,当累计的因子数量中的较小值大于等于x时,连续子数组乘积末尾0的数量必然大于等于x,此时进行下标计算即可求出以指针l为起始位置的所有连续子数组的数量。

39:36

承接区块链项目定制开发

微信:btc9767

QQ :1330797917

TELEGRAM: BTCOK9

承接区块链项目定制开发


qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台-javagopython毕设 » 给定一个数组,请你编写一个函数,返回元素乘积末尾零数量大于等于的连续子数组数量。 答案可能太大,请将答案对取模再返回。 数组长度不超过。 数组元素、均为不超过的正整数。

发表回复