HDU2058_The sum problem

来源:互联网 发布:施工网络计划图模板 编辑:程序博客网 时间:2024/06/11 17:52

The sum problem

http://acm.hdu.edu.cn/showproblem.php?pid=2058

Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 23826    Accepted Submission(s): 7082


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 1050 300 0
 

Sample Output
[1,4][10,10][4,8][6,9][9,11][30,30]
 

Author
8600
 

Source
校庆杯Warm Up

#include <stdio.h>#include <math.h>void print(long long int x,long long int y){    printf ("[%lld,%lld]\n",x,y);}int main(){    long long int N,M,i,j,a1;    while (scanf("%lld%lld",&N,&M),N!=0||M!=0)    {        j=(int)sqrt(2*M);        for (i=j;i>=1;i--)        {            a1=(int)((M-i*(i-1)/2)/i);            if (a1*i+i*(i-1)/2==M)                print(a1,a1+i-1);        }        printf ("\n");    }    return 0;}
0 0