https://www.acmicpc.net/problem/1834
2000000
3999999999999000000
위와 같이 원하던 값이 나오지 않았다.
이유는 (long)(i*N) 과 같이 해줬었는데, 오버플로우 이후 long형으로 바뀌기 때문에 그런 것이었다.
long i=1 혹은 (long)i*N으로 하여 i의 형을 long으로 해주어 오버플로우가 일어나지 않도록 해야했다.
package boj;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class BOJ1834 {
static int N;
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
long ans = 0;
for(int i=1; i<N; ++i) {
ans += (long)i*N + i;
}
System.out.println(ans);
}
}
'코딩테스트(Coding Test) > 백준' 카테고리의 다른 글
[BOJ1238] 파티 (0) | 2024.04.27 |
---|---|
[BOJ2011] 암호코드 (0) | 2024.02.01 |
[백준/BOJ] 12865 평범한 배낭 (0) | 2023.08.16 |
[BOJ] 2293 동전1 (0) | 2023.08.16 |
[BOJ261169] 세 번 이내에 사과를 먹자 - JAVA (0) | 2023.04.02 |