LeetCode 5178. 4倍

1.トピック

あなたの整数NUMSの配列を与えるために、まさにそこにある配列を返却してください4倍これらの整数の個々の要素の合計が。

整数出会うタイトルの意味は、アレイ内に存在しない場合は、0を返します。

示例:
输入:nums = [21,4,7]
输出:32
解释:
214 个因数:1, 3, 7, 21
43 个因数:1, 2, 4
72 个因数:1, 7
答案仅为 21 的所有因数的和。
 
提示:
1 <= nums.length <= 10^4
1 <= nums[i] <= 10^5

出典:滞在ボタン(LeetCode)
リンクします。https://leetcode-cn.com/problems/four-divisors
すべてのネットワークからの控除が著作権を保有。商業転載は、ソースを明記してください許可公式、非商用の転載をご連絡ください。

2.問題解決

  • それは時間が大きなNがかかり、N / 2から2からの直接シミュレーション、
class Solution {
public:
    int sumFourDivisors(vector<int>& nums) {
        int sum = 0;
        pair<bool,int> p;
        for(int i = 0; i < nums.size(); ++i)
        {
        	p = isfour(nums[i]);
            if(p.first)
                sum += p.second;
        }
        return sum;
    }

    pair<bool, int> isfour(int &n)
    {
    	if(n == 1)
    		return {false, 0};
    	int count = 2;
    	int divs = 1+n;
    	for(int i = 2; i <= n/2; ++i)
    	{
    		if(n%i == 0)
    		{
    			count++;
    			divs += i;
            }
    		if(count > 4)
    			return {false,0};
    	}
    	return {count==4,divs};
    }
};

ここに画像を挿入説明

  • ペア要因ので、2から横断するように n個 \ SQRT {N}
  • ケースの一組は、同じ要因であることに注意してください
class Solution {
public:
    int sumFourDivisors(vector<int>& nums) {
        int sum = 0;
        pair<bool,int> p;
        for(int i = 0; i < nums.size(); ++i)
        {
        	p = isfour(nums[i]);
            if(p.first)
                sum += p.second;
        }
        return sum;
    }

    pair<bool, int> isfour(int &n)
    {
    	if(n == 1)
    		return {false, 0};
    	int count = 2;
    	int divs = 1+n;
    	for(int i = 2; i <= sqrt(n); ++i)
    	{
    		if(n%i == 0)
    		{
                if(i != n/i)
    			{
                    count += 2;
    			    divs += i+n/i;
                }
                else
                {
                    count += 1;
                    divs += i;
                }
            }
    		if(count > 4)
    			return {false,0};
    	}
    	return {count==4,divs};
    }
};

ここに画像を挿入説明

公開された756元の記事 ウォンの賞賛939 ビュー260 000 +

おすすめ

転載: blog.csdn.net/qq_21201267/article/details/105033772