개발 지식/알고리즘

[백준] 1834 나머지와 몫이 같은 수

트리맨스 2019. 2. 27. 22:34
반응형

문제 : 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