枚举区间可能的长度len,将m减去1~len构成的序列和后如果结果是len的倍数,则可以构成答案区间。

#include<stdio.h>
#include<math.h>
int main(){
    int n,m,len,b;
    while(scanf("%d%d",&n,&m)!=EOF&&(n||m)){
        for(len=sqrt(m*2);len;len--){
                b=m-(len*len+len)/2;
                if(b%len==0)
                    printf("[%d,%d]\n",(b/len)+1,(b/len)+len);
        }
        putchar('\n');
    }
    return 0;
}

 

相关文章: