HDOJ 1323 Perfection(简单题)

简介: Problem Description From the article Number Theory in the 1994 Microsoft Encarta: “If a, b, c are integers such that a = bc, a is called a...

Problem Description
From the article Number Theory in the 1994 Microsoft Encarta: “If a, b, c are integers such that a = bc, a is called a multiple of b or of c, and b or c is called a divisor or factor of a. If c is not 1/-1, b is called a proper divisor of a. Even integers, which include 0, are multiples of 2, for example, -4, 0, 2, 10; an odd integer is an integer that is not even, for example, -5, 1, 3, 9. A perfect number is a positive integer that is equal to the sum of all its positive, proper divisors; for example, 6, which equals 1 + 2 + 3, and 28, which equals 1 + 2 + 4 + 7 + 14, are perfect numbers. A positive number that is not perfect is imperfect and is deficient or abundant according to whether the sum of its positive, proper divisors is smaller or larger than the number itself. Thus, 9, with proper divisors 1, 3, is deficient; 12, with proper divisors 1, 2, 3, 4, 6, is abundant.”
Given a number, determine if it is perfect, abundant, or deficient.

Input
A list of N positive integers (none greater than 60,000), with 1 < N < 100. A 0 will mark the end of the list.

Output
The first line of output should read PERFECTION OUTPUT. The next N lines of output should list for each input integer whether it is perfect, deficient, or abundant, as shown in the example below. Format counts: the echoed integers should be right justified within the first 5 spaces of the output line, followed by two blank spaces, followed by the description of the integer. The final line of output should read END OF OUTPUT.

Sample Input
15 28 6 56 60000 22 496 0

Sample Output
PERFECTION OUTPUT
15 DEFICIENT
28 PERFECT
6 PERFECT
56 ABUNDANT
60000 ABUNDANT
22 DEFICIENT
496 PERFECT
END OF OUTPUT

题意也比较容易理解:找一个数的约数之和是不是和这个数相等,
或者是大于,还是小于。
如果相等,后面接:PERFECT
如果约数和小于这个数,后面接:DEFICIENT
如果约数和大于这个数,后面接:ABUNDANT
然后。。。就写吧。水题

import java.util.Scanner;

public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String strNum = sc.nextLine();
        String strsNum[] = strNum.split(" ");
        int[] num = new int[strsNum.length-1];

        for(int i=0;i<num.length;i++){
            num[i]=Integer.parseInt(strsNum[i]);
        }
        System.out.println("PERFECTION OUTPUT");
        for(int i=0;i<num.length;i++){
            strNum = "ABUNDANT";
            if(isTrue(num[i])==-1){
                strNum = "DEFICIENT";
            }
            if(isTrue(num[i])==0){
                strNum = "PERFECT";
            }
            System.out.printf("%5d",num[i]);
            System.out.println("  "+strNum);
        }
        System.out.println("END OF OUTPUT");

    }

    private static int isTrue(int i) {
        int sum=0;//约数之和
        for(int k=1;k<=i/2;k++){
            if(i%k==0){
                sum=sum+k;
            }
        }
        if(sum<i){
            return -1;
        }
        if(sum==i){
            return 0;
        }
        return 1;
    }

}
目录
相关文章
|
6月前
hdoj 2089 不要62
这题数据量相对比较小,可以暴力打表解决。不过我这里用数位dp 刚开始学数位dp,参考了别人的代码。
22 0
HDOJ 2046 骨牌铺方格
HDOJ 2046 骨牌铺方格
122 0
HDOJ 2046 骨牌铺方格
HDOJ 2802 F(N)
HDOJ 2802 F(N)
80 0
HDOJ 2802 F(N)
HDOJ 1303 Doubles(简单题)
HDOJ 1303 Doubles(简单题)
79 0
HDOJ 2041 超级楼梯
HDOJ 2041 超级楼梯
84 0
|
机器学习/深度学习
HDOJ 2074 叠筐
Problem Description 需要的时候,就把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错。这个工作现在要让计算机来完成,得看你的了。 Input 输入是一个个的三元组,分别是,外筐尺寸n(n为满足0< n< 80的奇整数),中心花色字符,外筐花色字符,后二者都为ASCII可见字符; Output 输出叠在一起的筐图案,中心花色与外筐花色字符从内层起交错相叠,多筐相叠时,最外筐的角总是被打磨掉。
818 0
HDOJ 2004 成绩转换
Problem Description 输入一个百分制的成绩t,将其转换成对应的等级,具体转换规则如下: 90~100为A; 80~89为B; 70~79为C; 60~69为D; 0~59为E; Input 输入数据有多组,每组占一行,由一个整数组成。
857 0
|
人工智能 Java 测试技术
HDOJ 3784
继续xxx定律 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1238    Accepted Submission(s): 341 Problem Description 当n为3时,我们在验证xxx定律的过程中会得到一个序列,3,5,8,4,2,1,将3称为关键数,5,8,4,2称为覆盖数。
777 0