페이지

2018번: 수들의 합 5

https://www.acmicpc.net/problem/2018


$O(\sqrt n)$

(i+1) + (i+2) + ... + (i+j) = s
(1+2+...+j) + i*j = s
즉, (s-(1+2+...+j))%j==0이면 가능


#include<cstdio>
int n, r;
int main() {
        scanf("%d", &n);
        for (int i = 1, j = 0; (j += i) <= n; i++) r += (n - j) % i == 0;
        printf("%d", r);
        return 0;
}

댓글 없음 :

댓글 쓰기