题解 | 完数VS盈数
完数VS盈数
https://www.nowcoder.com/practice/ccc3d1e78014486fb7eed3c50e05c99d
#include<bits/stdc++.h>
using namespace std;
vector<int> vec1;//存放完数
vector<int> vec2;//存放盈数
int isying(int n){
vector<int> vec3;
int sum=0;
for(int i=1;i<n;i++)
if(n%i==0)vec3.push_back(i);
for(int i=0;i<vec3.size();i++){
sum=sum+vec3[i];
}if(sum==n)return 1;// 完数
else if(sum>n) return 2;//为赢数
else return 0;
}
int main(){
for(int i=2;i<=60;i++){
if(isying(i)==2)vec2.push_back(i);
if(isying(i)==1)vec1.push_back(i);
}
printf("E: ");
vector<int>::iterator it;
for(it=vec1.begin();it!=vec1.end();it++){
printf("%d ",*it);
} printf("\n");printf("G: ");
vector<int>::iterator it1;
for(it1=vec2.begin();it1!=vec2.end();it1++){
printf("%d ",*it1);
}
return 0;
}