난이도는 어렵지 않은 문제이다.
어떤 수 N으로 나눌 때 나머지는 항상 N보다 작다.
"나머지 = 몫"인 경우를 구하면 되므로 N보다 작은 수 i에 대하여 "i = 나머지 = 몫"이라고 할 때,
"몫*N + 나머지"가 문제에서 구해야 하는 자연수이므로 i*N + i (단, i<N)을 모두 구하면 된다.
주의할 점은, 문제에서 N의 최댓값이 2000000인데, 위 수식대로 구하게 되면 int 범위를 넘어서는 오버플로우가 발생하게 되므로
자료형을 long형으로 해야한다.
#include <stdio.h>
int main(void){
long N;
long sum = 0;
scanf("%ld",&N);
for(int i=0;i<N;i++)
{
sum+=(i*N+i);
}
printf("%ld\n",sum);
}
'BOJ' 카테고리의 다른 글
[백준 5217번] 쌍의 합 (1) | 2024.03.22 |
---|---|
[백준 25501번] 재귀의 귀재 (0) | 2023.04.08 |
[백준 1185번] 유럽여행 (java) (1) | 2021.06.09 |
[백준 14442번] 벽 부수고 이동하기 2 (java) (0) | 2021.06.04 |
[백준 2206번] 벽 부수고 이동하기 (java) (0) | 2021.06.04 |