DINGA DINGA
728x90

www.acmicpc.net/problem/1834

 

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

'C & C++ > BOJ' 카테고리의 다른 글

[백준] 2798번: 블랙잭  (0) 2021.03.11
[백준] 10809번: 알파벳 찾기  (0) 2021.03.04
[백준] 1731번: 추론  (0) 2021.03.03
[백준] 2908번: 상수  (0) 2021.02.25
[백준] 13235번: 팰린드롬  (0) 2021.02.25