杭电acm 1040 高手指点一下 总是PE 谢谢了!!

2024-12-20 14:39:51
推荐回答(1个)
回答1:

#include

int main()

{

int n,m;

int l,i,a,b,s;

while (scanf("%d%d",&n,&m),n + m)

{

l = (int)sqrt(2 * m);

for (i = l; i >= 1; i--)

{

s = (2*m + i - i*i)/2;

if(s % i == 0)

{

a = s / i;

if(a > n) break;

printf("[%d,%d]\n",a,a + i - 1);

}

}

printf("\n");

}

return 0;

}

我做的时候也是缩小了他的范围来做的,然后根据一边算,给你看看代码