题解 | #完数与盈数#

完数与盈数

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的使用,其实就是相当于一个变长数组,你得理解它的那个概念

全部评论
还有这里注意一下,它的输出格式:最后一个单词后面不能有空格,你可以printf("E:");printf(" %d",x);
点赞
送花
回复
分享
发布于 2023-05-12 20:57 山东

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务