hdoj 2058 The sum problem 【等差数列求和】

来源:互联网 发布:mac下载手机铃声 编辑:程序博客网 时间:2024/04/28 05:13

The sum problem

Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 20890    Accepted Submission(s): 6151

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]


ACcode:

#include<cstdio>#include<cstring>#include<cmath>#include<stack>#include<queue>#define cle(a, b) memset(a, (b), sizeof(a))#define Wi(a) while(a--)#define Si(a) scanf("%d", &a)#define Pi(a) printf("%d\n", (a))#define INF 0x3f3f3f3f#include<algorithm>using namespace std;int main(){int n, m;while(scanf("%d%d", &n,&m), n|m){int i, j, k;for(k = sqrt(2*m); k > 0; --k){i = (2*m/k-k+1)/2;j = (i+k-1);if((i+j)*k == 2*m)printf("[%d,%d]\n",i, j);}printf("\n");} return 0;}


0 0
原创粉丝点击