classSolution: defgetGoodIndices(self, variables: List[List[int]], target: int) -> List[int]: ans = [] x = 0 for a, b, c, m in variables: tp = pow(a, b, 10) ifpow(tp, c, m) == target: ans.append(x) x += 1 return ans
classSolution { public: vector<int> getGoodIndices(vector<vector<int>>& variables, int target){ vector<int> ans; typedeflonglong ll; function<int(ll, ll, ll)> qpow = [&](ll a, ll b, ll m){ ll res = 1; while (b){ if (b&1) res = (res*a)%m; a = a*a%m; b >>= 1; } return (int)res; }; int x = 0; for (vector<int>& x : variables){ int a = x[0], b = x[1], c = x[2], m = x[3]; if (qpow(qpow(a, b, 10), c, m) == target){ ans.push_back(x); } x += 1; } return ans; } };
classSolution { public: intnumberOfGoodPartitions(vector<int>& nums){ int n = nums.size(); unordered_map<int, int> mp; for (int i = 0;i < n;i++){ mp[nums[i]] = i; } int cnt = 0; for (int i = 0;i < n;){ int j = i, ed = mp[nums[j]]; while (j <= ed){ ed = max(ed, mp[nums[j]]); j++; } cnt++; i = j; } typedeflonglong ll; function<int(ll, ll, ll)> qpow = [&](ll a, ll b, ll m){ ll res = 1; while (b){ if (b&1) res = (res*a)%m; a = a*a%m; b >>= 1; } return (int)res; }; longlong M = 1e9+7, ans = qpow(2, cnt-1, M); return (int)ans; } };