HDU2058_The sum problem

The sum problem


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 10 50 30 0 0
 

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

Author
8600
 

Source

#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;
}

猜你喜欢

转载自blog.csdn.net/github_36324732/article/details/53511664