[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 의 연속된 수로 표현이 가능해진다.