• 主页
• 问答

大牛来讨论一下哦

komai908 北京 其他  2009-07-25 08:52:35

Problem Description
Given a sequence 1,2,3,......N, your job is to calculate all the possible sub-sequences that the sum of the sub-sequence is M.

Input
Input contains multiple test cases. each case contains two integers N, M( 1 <= N, M <= 1000000000).input ends with N = M = 0.

Output
For each test case, print all the possible sub-sequence that its sum is M.The format is show in the sample below.print a blank line after each test case.

Sample Input
20 10
50 30
0 0

Sample Output
[1,4]
[10,10]

[4,8]
[6,9]
[9,11]
[30,30]

http://acm.hdu.edu.cn/showproblem.php?pid=2058
...全文
75 点赞 收藏 4

4 条回复

abcdef0966 2009-07-26
``````#include <stdio.h>
#define MAX 20
int main()
{
int buf1[MAX],buf2[MAX];
int c;

for (c = 0; c < MAX; c++)
{
scanf("%d %d",&buf1[c],&buf2[c]);
if ( !buf1[c] && !buf2[c])
break;
c++;
}

int r;
for ( r = 0; r < c; r++)
{
int end,n,m;
n = buf1[r];
m = buf2[r];

end = m < n ? m:n;
int i,j;
for (i = 1; i <= end; i++)
{
int sum = 0;
int k;
k = j = i;
while (sum < m)
sum += j++;
if (sum == m)
printf("[%d %d]\n",k,j-1);
}

printf("\n");
}

return 0;

}``````

bigbug9002 2009-07-25

(i+x)(x-i+1)/2=M

hua_zhixing_ 2009-07-25

up

3.2w+