这篇博文同上篇博文百度2017年暑期实习生笔试题——单词接龙同属2016中兴捧月蓝剑之路挑战赛初赛模拟测试题,相比前一题难度偏低,非恶意灌水,仅为保证该系列博文的完整性。
题目来源:iNOC产品部--完全数计算
这道题同时也是2016中兴捧月蓝剑之路挑战赛初赛模拟测试题,问题描述如下图:
测试用例如下图:
中兴的比赛中官方已经为我们实现了主程序,只需要我们自己实现PerfectNumber类的perfectNumberCheck方法即可,而华为iNOC产品部机试题是要统计出所给范围内完全数的个数,比中兴的模拟题稍复杂,以此为准,Java实现的源码如下:
package perfectnumber; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner scan = new Scanner(System.in); while(scan.hasNext()) { int n = scan.nextInt(); int sum = 0; for(int i = 1; i <= n; i++) { if(PerfectNumber.perfectNumberCheck(i) == 1) sum++; } System.out.println(sum); } scan.close(); } } class PerfectNumber { public static int perfectNumberCheck(int n) { int sum = 0; for(int i = 1; i < n; i++) { if(n % i == 0) sum += i; } if(sum == n) return 1; else return 0; } }