2026-01-04 Daily Challenge
Today I have done leetcode's January LeetCoding Challenge with cpp.
January LeetCoding Challenge 4
Description
Four Divisors
Given an integer array nums, return the sum of divisors of the integers in that array that have exactly four divisors. If there is no such integer in the array, return 0.
Example 1:
Input: nums = [21,4,7] Output: 32 Explanation: 21 has 4 divisors: 1, 3, 7, 21 4 has 3 divisors: 1, 2, 4 7 has 2 divisors: 1, 7 The answer is the sum of divisors of 21 only.
Example 2:
Input: nums = [21,21] Output: 64
Example 3:
Input: nums = [1,2,3,4,5] Output: 0
Constraints:
1 <= nums.length <= 1041 <= nums[i] <= 105
Solution
class Solution {
public:
int sumFourDivisors(vector<int>& nums) {
int answer = 0;
map<int, int> sums;
for(auto n : nums) {
if(sums.count(n)) {
if(sums[n] != -1) answer += sums[n];
continue;
}
int c = 0;
int s = 0;
for(int i = 1; i * i <= n; ++i) {
if(!(n % i)) {
if(i * i == n) {
s = -1;
c = -1;
break;
}
c += 2;
s += i + (n / i);
}
}
if(c == 4) {
answer += s;
sums[n] = s;
} else {
sums[n] = -1;
}
}
return answer;
}
};
// Accepted
// 18/18 cases passed (30 ms)
// Your runtime beats 49.51 % of cpp submissions
// Your memory usage beats 24.63 % of cpp submissions (19.1 MB)