【HDOJ】2058 The sum problem

首先使用高斯公式,求出a,b代数式。然后就需要检验是否满足条件。注意(a+b)(b-a+1)=2*m,存在约数关系。使用蛮力遍历会TLE。注意约数关系及printf的顺序即可。

#include <stdio.h>
#include <math.h>

int main() {
    int n, m, a, b;
    int k;

    while (scanf("%d %d", &n, &m)!=EOF && (n||m)) {

        for (k=sqrt(m*2); k>=1; --k) {
            if ((2*m)%k !=0)
                continue;
            a = (1-k)/2+m/k;
            if ((k+2*a-1)*k == 2*m) {
                printf("[%d,%d]\n",a,k+a-1);
            }
        }

        printf("\n");
    }

    return 0;
}

 

posted on 2014-03-12 13:57  Bombe  阅读(146)  评论(0编辑  收藏  举报

导航