题解 | #完数与盈数#
完数与盈数
https://www.nowcoder.com/practice/df0d850e41894d06a165bf445ec8a8b4
#include<cstdio> #include<iostream> #include<vector> using namespace std; int sum(int m) { int sum=0; for(int i=1;i<=m/2;i++) { if(m%i==0) { sum=sum+i; } } return sum; } int main() { int m; int count; vector<int> wanshu; vector<int> yingshu; vector<int> shu; for(m=2;m<=60;m++){ count=sum(m); if(count>m) { yingshu.push_back(m); } else if(count==m) { wanshu.push_back(m); } else { shu.push_back(m); } } printf("E: "); for(auto x:wanshu) { printf("%d ",x); } printf("G: 2 "); for(int i = 0; i < yingshu.size() - 1; i++){ printf("%d ", yingshu[i]); } printf("%d", yingshu[yingshu.size() - 1]); }
提示一下自己:有时候很多双重循环里的东西,你只需要放个函数在前面,感觉就可以减少很多错误了,我这个最开始就是套的双层循环,但是不明白为什么不对,我需要在运行一下。
再就是,这个答案里,2是不对的
还有就是。关于vector的使用,其实就是相当于一个变长数组,你得理解它的那个概念