How We Coding

BOJ/Math +1

[2018] 수들의 합 5

BOJ/Math2018. 7. 22. 13:26

### Math ###


[2018] 수들의 합 : http://boj.kr/2018


<소스코드>


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
 
 
int main()
{
    int n;
    int L=0, R=0;
    int ans=0, sum=0;
    scanf("%d"&n);
 
    if(n&1) {
        for(int i=3; i<=n; i+=2)
            if(n%i == 0
                ans++;
        ans++;
    }
    else {
        for(int i=2; i<=n; i+=2)
            if(n%i == 0 && (n/i)&1)
                ans++;
    }
    printf("%d\n", ans); 
    return 0;
}
cs


1) 홀수의 경우

- 무조건 두개의 연속된 합으로 표현이 가능하다.

- 홀수로 나누어 떨어지면 연속된 수들의 합으로 가능하다. 

   예를들어 9는 3으로 나누어 떨어지므로 3+3+3 으로 표현이 가능하고, 중앙값 기준으로 양옆은 1씩 주고 받으면 가능하다, 숫자가 더있으면, 2씩, 3씩, 주고받으면 된다.


2) 짝수인 경우

- 짝수로 나누어 떨어지고, 그 몫이 홀수이면 가능하다.

   예를 들어 10은 2로 나누어 떨어지고, 그 몫은 5이다. 5는 두개의 수인 2와 3으로, 1과 4로 표현이 가능하다. 즉 1, 2, 3, 4 의 연속된 수로 표현이 가능해진다.