HDU2058
来源:互联网 发布:西游记后传知乎 编辑:程序博客网 时间:2024/06/03 21:50
http://acm.hdu.edu.cn/showproblem.php?pid=2058
The sum problem
Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 10174 Accepted Submission(s): 3111
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]
找一个子序列的和等于M,那么这个子序列可以看成a+1, a+2, ... , a+d 这时,d就为这个序列的长度,起始数字就是a+1,而这个序列的和即M=a*d + (1 + d) * d /2;得出d*d<2 * m,从而可以枚举d,计算出a
#include<iostream>#include<cmath>using namespace std;int main(){ int n,m; int d,b; while(cin>>n>>m && (n||m)){ for(d=sqrt(2.0 *m); d>0;d--){ b=m-(d+d*d)/2; if(b%d==0) cout<<"["<<(b/d)+1<<","<<(b/d)+d<<"]"<<endl; } cout<<endl; } return 0;}
网络上的其他相关代码:
#include <stdio.h>#include <math.h>int main(){int n, m, len, a;while(~scanf("%d%d", &n,&m)){if(!n && !m)break;len = sqrt(double(m * 2)) + 1;//根据等差数列来算,数列长度// m = (a + a + len - 1) * len / 2// m = a * len + len(len - 1)/ 2// m - len * (len - 1) / 2 = a * len//a = m / len - (len - 1) / 2while(--len){a = m / len - (len - 1) / 2;if((a + a + len - 1) * len / 2 == m){printf("[%d,%d]\n", a, a+len - 1);}}printf("\n");}return 0;}
- HDU2058
- hdu2058
- HDU2058
- hdu2058
- hdu2058
- hdu2058
- HDU2058:The sum problem
- hdu2058 The sum problem
- HDU2058 The Sum Problem
- hdu2058 The sum problem
- HDU2058 The sum problem
- hdu2058 The sum problem
- hdu2058 The sum problem
- HDU2058 找规律+递推
- hdu2058(数学题,有点坑)
- HDU2058 水题 数学题 几个数之和
- HDU2058 The sum problem【数学计算+枚举】
- hdu2058 The sum problem(C语言)
- Linux 文件系统剖析
- poj 1102
- C++笔记(三)
- mjpg-streamer在centos中的安装
- 一些代码
- HDU2058
- Android 开发之 ---- bootloader (LK)
- yii-视图- form时间控件的使用
- 企业应用平台(EAP)概述
- oracle学习笔记
- IntelliJ IDEA 11.1.2部署WEB J2EE 折腾了我1天
- ARM汇编程序---用ARM汇编实现R0寄存器中数据调换数据
- PHP+Ajax实时自动检测是否联网
- 技术基层管理实践