C & C++/BOJ
[백준] 1834번: 나머지와 몫이 같은 수
와금
2021. 3. 4. 16:57
728x90
1834번: 나머지와 몫이 같은 수
N으로 나누었을 때 나머지와 몫이 같은 모든 자연수의 합을 구하는 프로그램을 작성하시오. 예를 들어 N=3일 때, 나머지와 몫이 모두 같은 자연수는 4와 8 두 개가 있으므로, 그 합은 12이다.
www.acmicpc.net
코드
#include <stdio.h>
main() {
long long int n;
scanf("%lld", &n);
printf("%lld", n * (n - 1) * (n + 1) / 2);
}
설명
먼저 n은 최대 2,000,000까지 입력될 수 있으므로 long long int로 작성했다.
문제를 살펴보면,
n=2일 때: 3 (합: 8)
n=3일 때: 4, 8 (합: 12)
n=4일 때: 5, 10, 15 (합: 30)
n=5일 때: 6, 12, 18, 24 (합: 60)
. . .
이므로 공식을 유도해보면 n으로 나누었을 때 몫과 나머지가 같은 수의 합은 n(n-1)(n+1)/2로 나타낼 수 있다.
따라서 입력 받은 n을 이용해 바로 위의 공식대로 계산해 출력했다.
728x90