代码改变世界

HDU_杭电ACM_2058

2015-04-28 23:20  HaodongGUO  阅读(195)  评论(0编辑  收藏  举报

今天做了一道简单的数学题算法

ac代码 :

#include <stdio.h>
#include <math.h>
//
int main()
{
    int N,M,i,j;
    while(scanf("%d%d",&N,&M) && M+N)
    {
        for(j=pow(2.0*M,0.5);j>=1;j--) //区间长度最短为1;j*j<2m,所以,j从sprt(2*m)开始
        {
            i=(2*M/j-j+1)/2;//i所求区间表示起始值,j表示区间长度
            if(j*(j+2*i-1)/2==M) 
                printf("[%d,%d]\n",i,i+j-1);//由分析可得
        }
        printf("\n");
    }
    return 0;
}