Number of Different Subsequences GCDs LeetCode solution in C++
1class Solution {2public:3int countDifferentSubsequenceGCDs(vector<int> &nums) {4int curr_max = INT_MIN, ret = 0, n = nums.size();5int present[200001] = {0};6for (int i = 0; i < n; i++) {7curr_max = max(curr_max, nums[i]);8present[nums[i]] = 1;9}10for (int i = 1; i <= curr_max; i++) {11int curr_gcd = 0;12for (int j = i; j <= curr_max; j += i) {13if (present[j] == 1) curr_gcd = gcd(curr_gcd, j);14if (curr_gcd == i) {15ret++;16break;17}18}19}20return ret;21}22};