力扣2438.二的冪數組中查詢范圍內的乘積
-
lowbit求所有2的冪
- accumulate函數(begin,end,start,way)
- 求和/積的方式
- 求積并取模
-
const int N = 1e9 + 7;class Solution {public:int lowbit(int x){return x & -x;}vector<int> productQueries(int n, vector<vector<int>>& queries) {vector<int> powers;while(n){int t = lowbit(n);n -= t;powers.emplace_back(t);}vector<int> res;for(auto v:queries){int l = v[0];int r = v[1];//accumulate的用法int product = accumulate(powers.begin() + l,powers.begin() + r + 1, 1 ,[](int x,int y) {return (long long)x*y %N ;});res.emplace_back(product);}return res;}};