Untitled
unknown
plain_text
5 months ago
1.2 kB
2
Indexable
class Solution { public: static int spf[1000001]; Solution() { static bool init = false; if (!init) { sieve(1000000); init = true; } } static void sieve(int mx) { for (int i = 1; i <= mx; ++i) { spf[i] = i; } for (int i = 2; i * i <= mx; ++i) { if (spf[i] == i) { for (int j = i * i; j <= mx; j += i) { if (spf[j] == j) { spf[j] = i; } } } } } // Function to get the greatest prime divisor (gpd) int gpd(int n) { return (n == 1 ? 1 : n / spf[n]); } int minOperations(vector<int>& nums) { int ans = 0, n = nums.size(); for (int i = n - 2; i >= 0; --i) { if (nums[i] > nums[i + 1]) { int div = gpd(nums[i]); if (nums[i] / div > nums[i + 1]) return -1; nums[i] = nums[i] / div; ans++; } } return ans; } }; int Solution::spf[1000001];
Editor is loading...
Leave a Comment