70、完全数,又称完美数或完备数,是一些特殊的自然数。
它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。
例如:28,它有约数1、2、4、7、14、28,除去它本身28以外,其余5个数相加,1+2+4+7+14=28.
输入n,请输出n以内(含n)完全数的个数。
数据范围:1 <= n < 5*105
输入描述:
输入一个数字n
输出
输出不超过n的完全数的个数
示例1
输入:
1000
输出:
3
思路
定义一个bool类型的函数判断是否为完全数 在main函数中循环判断若是完全数则count+1 输出count
具体实现
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int count = 0;
for (int i = 1; i <= N;i++){
count += PerfectNum(i) ? 1 : 0;
}
System.out.println(count);
}
static boolean PerfectNum(int num){
int ans = 0;
for (int i = 1;i <= (num >> 1) ;i++){
ans += num % i == 0 ? i : 0;
}
return num == ans;
}
27、输入一棵二叉树,求该树的深度。
从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度,根节点的深度视为1.
数据范围:节点的数量满足0 <= n <= 100,节点的值满足 0 <= val <= 100
进阶:空间复杂度O(1),时间复杂度O(n)
计入输入的用例为{1,2,3,4,5,#,6,#,#,7},
具体实现
static int treehigh(Tree root,int high){
if (root == null)return high;
int left = 0;
int right = 0;
left += treehigh(root.left,high+1);
right += treehigh(root.right,high+1);
return Math.max(left,right);
}