Today's special moments become memories of tomorrow.

BOJ

[백준 1834번] 나머지와 몫이 같은 수(C언어)

lotus lee 2024. 3. 22. 13:10

 

 

 

난이도는 어렵지 않은 문제이다. 

 

어떤 수 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);
}