응애개발자
article thumbnail
728x90

문제

 

2247번: 실질적 약수

첫째 줄에 CSOD(n)을 1,000,000으로 나눈 나머지를 출력한다.

www.acmicpc.net


 

풀이 방법

1. N 이하의 수에서 어떤 수 i를 약수로 가지는 수의 개수는 N/i개 이다.

2. 그러므로 N/i(자신을 포함한 약수의 개수) - 1 * i(값) 으로 구하면 됩니다.

 

코드

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

public class Main {
    private static StringBuilder sb;
    private static BufferedReader br;
    private static StringTokenizer st;
    private static int N;
    private static long sum = 0;


    //입력
    public static void input() throws Exception {
        br = new BufferedReader(new InputStreamReader(System.in));
        sb = new StringBuilder();

        N = Integer.parseInt(br.readLine());
    }

    //실행
    public static void process() {
        for(int i = 2 ; i < N ; i++){
            sum+=(N/i-1)*i;
        }
        sum %= 1000000;
        System.out.println(sum);
    }


    public static void main(String[] args) throws Exception {
        input();
        process();
    }
}
profile

응애개발자

@Eungae-D

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!