hdu 2058 The sum problem 枚举区间长度 + 等差公式
2016-03-08 19:55
134 查看
题目:http://acm.hdu.edu.cn/showproblem.php?pid=2058
思路:刚开始用尺取法做的,果断TLE,后来用等差数列求和公式变形,想到枚举区间长度,然后求和验证是否相等
思路:刚开始用尺取法做的,果断TLE,后来用等差数列求和公式变形,想到枚举区间长度,然后求和验证是否相等
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #include <functional> #include <vector> #include <map> #include <set> using namespace std; typedef long long ll; int main() { ll n, m; while(scanf("%I64d%I64d", &n, &m), n != 0 || m != 0) { int cnt = sqrt(2 * m); // 对于最长连续和的长度cnt, cnt(1 + cnt) / 2 = m, 于是求得cnt while(cnt) { int l = (2 * m / cnt - cnt + 1) / 2; //由等差数列求和公式变形可得,当区间长度为cnt时,求得左端边界 int r = l + cnt - 1; if(cnt * (l + r) / 2 == m) printf("[%d,%d]\n", l, r); cnt--; } printf("\n"); } return 0; }
相关文章推荐
- win10 系统下获取系统版本号一直为6.2的问题
- USB驱动分析
- eclipse插件开发
- cp命令详解
- Codeforces Round #345 (Div. 2) C. Watchmen
- onEnterTransitionDidFinish()的用途
- 第1次上机实验/1
- linux USB 编程
- 尝试开始写博客
- codeforces 650D D. Image Preview (暴力+二分+dp)
- 【kAri OJ604】圣哲的树
- POJ-2752 Seek the Name, Seek the Fame
- Kafka入门经典教程
- JDBC实现用于操作数据库Mysql的工具类JDBCTools
- bzoj3575[Hnoi2014]道路堵塞
- 按三角形逆序输入顶点来计算多边形面积
- MyBatis初探
- Html5-Video标签以及字幕subtitles和captions的区别
- git提交代码步骤
- 使用BufferedInputStream的好处