diff --git a/practice/leetcode/solutions_03600/solution_03653.py b/practice/leetcode/solutions_03600/solution_03653.py new file mode 100644 index 0000000..5cf75df --- /dev/null +++ b/practice/leetcode/solutions_03600/solution_03653.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python3 + +"""LeetCode solution 03653.""" + +from functools import reduce +from operator import xor + +import unittest + + +class Solution(object): + def xorAfterQueries(self, nums, queries): + """ + :type nums: List[int] + :type queries: List[List[int]] + :rtype: int + """ + for q in queries: + l, r, k, v = q + idx = l + while idx <= r: + nums[idx] = (nums[idx] * v) % (10**9 + 7) + idx += k + + return reduce(xor, nums) + + +class TestSolution(unittest.TestCase): + def test_xorAfterQueries(self): + solution = Solution() + self.assertEqual(solution.xorAfterQueries([1, 1, 1], [[0, 2, 1, 4]]), 4) + self.assertEqual(solution.xorAfterQueries([2, 3, 1, 5, 4], [[1, 4, 2, 3], [0, 2, 1, 2]]), 31) + + +if __name__ == '__main__': + unittest.main()