반응형
문제 : N으로 나누었을 때 나머지와 몫이 같은 모든 자연수의 합을 구하시오.
예) N=3일때 나머지와 몫이 같은 자연수는 4하고 8이므로, 답은 12이다.
이 문제는 간단한 점화식으로 풀이가 가능합니다.
N=2 일경우 3이 가능하고
N=3 일경우 4하고 8이 가능합니다.
N=4 일경우 5하고 10하고 15가 가능합니다.
그럼 여기서 점화식을 유추해 볼 수 있습니다.
문제의 답은 조건을 만족하는 모든 자연수의 합 이므로 N에 대한 점화식은
으로 유추해 볼 수 있습니다.
(1부터 N-1까지 더한 수에 N+1 을 곱한다.)
더 간단히 나타내야 하는데, 프로그래밍으로 유추하다 보니까 코드가 조금 보기 이상해졌습니다.
(함수 dd 를 만들어 유추해서 만들다가 코드가 더러워짐ㅠ)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #include <stdio.h> long long dd(long long j) { long long temp=0; for(long long i=1;i<=j;i++) { temp+=i; } return temp; } int main() { long long input,temp=0; scanf("%lld",&input); printf("%lld",(input+1)*dd(input-1)); } | cs |
제가 보기에도 이상하니까 간결하게 해 봅시다.
1 2 3 4 5 6 7 8 | #include <stdio.h> int main() { long long a; scanf("%lld",&a); printf("%lld",a*(a-1)*(a+1)/2); } | cs |
반응형
'개발 지식 > 알고리즘' 카테고리의 다른 글
[백준] 1929 소수 구하기 (0) | 2019.03.19 |
---|---|
[백준] 10250 ACM 호텔 (0) | 2019.03.15 |
[백준] 1152 단어의 개수 (0) | 2019.02.07 |
[백준] 2839 설탕 배달 (0) | 2019.02.04 |
[백준] 2557 Hello World (0) | 2019.02.03 |