본문 바로가기
백준/20001 - 25000

[백준] 23335번 : Aliquot Sum(JAVA)

by lms0806 2021. 10. 31.
728x90
반응형

https://www.acmicpc.net/problem/23335

 

23335번: Aliquot Sum

A divisor of a positive integer n is an integer d where m = n d is an integer. In this problem, we define the aliquot sum s(n) of a positive integer n as the sum of all divisors of n other than n itself. For examples, s(12) = 1 + 2 + 3 + 4 + 6 = 16, s(21)

www.acmicpc.net

풀이

s(n)은 n을 제외한 n의 약수들의 합입니다.

약수들의 합이 더 크면 "abundant", 같으면 "perfect", 작으면 "deficient"을 출력하면 됩니다.

 

※주의 : x가 1이 들어오는 경우가 있음(도움주신분 : tony9402)

 

소스코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int n = Integer.parseInt(br.readLine());
		
		StringBuilder sb = new StringBuilder();
		StringTokenizer st = new StringTokenizer(br.readLine());
		while(n --> 0) {
			int x = Integer.parseInt(st.nextToken());
			
			int sum = 0;
			if(x > 1) {
				sum = 1;
			}
			
			for(int i = 2; i * i <= x; i++) {
				if(x % i == 0) {
					sum += i;
					if(i * i != x) {
						sum += x / i;
					}
				}
			}
			sb.append(sum > x ? "abundant" : sum < x ? "deficient" : "perfect").append("\n");
		}
		System.out.print(sb);
	}
}

 

728x90
반응형

댓글