HDU2058 找规律+递推
来源:互联网 发布:淘宝自动分销怎么取消 编辑:程序博客网 时间:2024/05/19 16:28
The sum problem
Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 21732 Accepted Submission(s): 6380
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]
等差数列求和的问题,不过这里数据量过大所以要剪枝
我一开始想的是2*i肯定大于m,但是还是超了,看了人家的优化方案是这样的
1+2+。。。+(2*m)^1/2>m
#include <iostream>#include <math.h>using namespace std;int main(){ __int64 m ,n; while(cin>>n>>m,n||m) { __int64 a,k; for(k=(int)sqrt(2*m);k>0;k--)//因为1+2+。。。+(2*m)^1/2>m;所一和为m的元素个数应该小于等于(2*m)^1/2; { a=m/k-(k-1)/2;//假设从a开始一直加到a+k-1,一共k个元素和为m,可以计算出a; if((2*a-1+k)*k==2*m) //(2*m)^1/2可能不是整数,判断是有必要的; cout<<"["<<a<<","<<k+a-1<<"]"<<endl; }cout<<endl; }return 0;}
0 0
- HDU2058 找规律+递推
- 找规律 递推
- POJ 3517 找规律、递推
- 关于递推的程序,关键是找规律!!
- nyist 982 Triangle Counting(数学题,找规律 递推)
- UVa 1647 - Computer Transformation(找规律+递推)
- HDOJ-2050(递推,找规律)(折线分割平面)
- F(k)<(维护+枚举)\(找规律+递推+枚举)>
- 递推:Number Sequence(mod找规律)
- HDU 2050:折线分割平面(找规律,递推)
- CSU 1972: 大梵天的恩赐 <递推,找规律>
- UVAlive-6577 Binary Tree(递推+找规律)
- Maximum Value Problem FZU 2037 找规律 递推
- //数学基础-推公式找规律
- 递归 递推 规律
- hdu1290 - 献给杭电五十周年校庆的礼物 (递推求解)(找规律)
- 杭电2524 矩形A + B(找规律,递推 水题)
- HDOJ 题目1165 Eddy's research II(递推,找规律)
- 使用dom4j解析xml格式字符串,获取标签属性和内容
- Xcode 配置
- Android项目如何知晓当前运行的是哪个活动
- Podometer计步器
- C++第四次实验
- HDU2058 找规律+递推
- spring
- MySQL 基本语句记录
- java内存泄漏的定位与分析
- 记录webservice
- Access denied for user 'xxx'@'localhost.localdomain' (using password: YES))
- More Effective C++----效率 & (16)牢记80-20准则(80-20 rule)
- 51nod 1732 51nod婚姻介绍所
- VC6.0调试技巧 (一)