티스토리 뷰

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		
		long n = scanner.nextInt();
		long sum = 0;
		for(int i=1; i<n; i++) sum += n*i+i;
		System.out.print(sum);
		scanner.close();
	}
}

 

풀이 : 나머지와 몫이 같은 수는 1개만 존재 할 수 있으며, 나머지는 주어진 n보다 크지 않는다.

즉 나머지가 1이고 몫이 1인 것 부터 나머지가 n-1이며 몫도 n-1 까지 더하면 된다.

 

여기서 long 자연수 범위는 약 9*10^18~1 이므로 이 문제의 최대 출력값인

3999999999999000000

을 한번에 담을 수 있다.

 

또한 주의해야 할 점은

sum += i*n + i;에서 i*n + i의 값은 int형의 범위를 넘어갈 수 있으니,

n이나 i 둘 중 하나를 long long int 타입으로 만들어 놓거나

또는 long으로 casting(강제 형변환)을  해야 한다.

'java > BAEKJOON' 카테고리의 다른 글

java 1835번 카드 (백준)  (0) 2023.04.02
java 16562번 친구비 (백준)  (0) 2023.03.19
java 1034번 거짓말 (백준)  (1) 2023.03.19
java 16120번 PPAP (백준)  (0) 2023.03.18
java 6198번 옥상 정원 꾸미기 (백준)  (0) 2023.03.16
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함