$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; }
#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; }
댓글 없음 :
댓글 쓰기