站外题求条
  • 板块灌水区
  • 楼主void_sans
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/12/5 17:56
  • 上次更新2024/12/5 21:21:33
查看原帖
站外题求条
1558094
void_sans楼主2024/12/5 17:56

题目描述
最近晨晨对数字很感兴趣,特别是她认为“完全数”是最美的数字,所谓完全数是真约数之和加上1等于它本身的数。例如 28 的真约数是2,4,7,14,并且 1+2+4+7+14=28,所以 28 是完全数。晨晨想找出一段连续数据里面的所有完全数,如求 x~y(2≤x≤y≤10000) 中的完全数。但是她又感觉十进制的输出没有十六进制好看,所以她想把找到的完全数用 十六进制输出,如果这段数据里面没有完全数就输出“no”。
补充:真约数是指一个数除了1和它自己之外的所有约数就是真约数。例如:6的约数是1,2,3,6,真约数是2和3。
输入
一行:包括两个数,x y 代表求 x~y 之间的完全数。
输出
一行:x~y 之间用十六进制表示的完全数,数之间用空格分开。
样例输入 复制
2 29
样例输出 复制
6 1C

代码

#include<bits/stdc++.h>
using namespace std;
void zhuan(int n,int r)
{
	if(n==0) return ;
	int m=n%r;
	if(m<0) 
        m-=r,n+=r;
	if(m>=10) 
        m='A'+m-10;
	else 
        m+='0';
	zhuan(n/r,r);
	printf("%c",m); 
	return ;
}
int sb(int num)
{
	int len=0;
	for(int j=1;j<=num;j++)
	{
	    if(num%j==0)
	        len+=j;
	}
	if(len==num)
	    return len;
	else
	    return -1;
}
int main()
{
	int n,nl,k;
	string ans="";
	cin>>n>>nl;
	for(int i=n;i<=nl;i++)
	{
		if(sb(n)!=-1)
		    cout<<sb(n)<<" ";
	}
	
	return 0;
}
2024/12/5 17:56
加载中...