文章

246

粉丝

0

获赞

1179

访问

74.8k

头像
完数VS盈数 题解:
P1170 清华大学上机题
发布于2026年3月16日 11:01
阅读数 174

#include<iostream>
#include<vector>

using namespace std;

vector<int> nums1,nums2;

void work(int n)
{
    vector<int> nums;
    nums.push_back(1);
    for(int i=2;i*i<=n;i++)
    {
        if(n%i==0)
        {
            nums.push_back(i);
            if(n/i!=i)
            nums.push_back(n/i);
        }
    }
    int sum=0;
    for(int i=0;i<nums.size();i++)
    sum+=nums[i];
    if(sum==n)
    nums1.push_back(n);
	else if(sum>n)
	nums2.push_back(n);
}

int main()
{
    for(int i=2;i<=60;i++)
   	work(i);
    cout<<"E: ";
    for(int i=0;i<nums1.size();i++)
    cout<<nums1[i]<<" ";
    puts("");
    cout<<"G: ";
    for(int i=0;i<nums2.size();i++)
    cout<<nums2[i]<<" ";
    return 0;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发