和为指定值的连续序列
来源:互联网 发布:童装淘宝店铺简介 编辑:程序博客网 时间:2024/05/18 00:01
输入一个整数s,打印出所有和为s的连续正整数序列(至少包含两个数)。例如,对于输入15,由于有1+2+3+4+5=15,4+5+6=15,7+8=15,所以打印出1~5、4~6、7~8三个序列。
有个比较好的做法是利用等差数列求和公式:s=a*n+n*(n-1)/2。这里的a是第一个元素,n是项数。
int solve(int k){int count = 0;for (int i = 1, v = 0; (v = i * (i - 1) / 2) <= k; i++) {if ((k - v) % i == 0) {// a = (k - v) / i;count++;}}return count;}
这种方法只适用于这个特定的应用场景,题目稍微改变一下就不太好处理了。例如,要求求得的序列是某个数值中的连续序列,不再是自然数连续序列,这样就没办法用这个方法了。这种情况下可以先将数组排序,然后按照下面的方法求解即可。
int solve(int A[], int N, int val){int count = 0, beg = 1, end = 0, sum = A[0];while (beg < end && end < N) {if (sum == val) {count++;// A[beg] -> A[end]sum += A[++end];} else if (sum < val) {sum += A[++end];} else {sum -= A[beg++];}}return count;}
- 和为指定值的连续序列
- 连续的正数序列,使得和为指定值
- 面试题40:输出和为指定值的连续正数序列
- 【剑指offer】和为定值的连续正数序列
- 和为某一值的连续正序列
- 和为n的连续正整数序列
- 和为 n 的连续正整数序列
- 和为n的连续正数序列
- 和为N的连续正整数序列
- 和为n的连续子序列
- 和为N的连续正整数序列
- 和为sum的连续正整数序列
- 和为S的连续正数序列
- 和为S的连续正数序列
- 和为n的连续正数序列
- 和为S的连续正数序列
- 和为s的连续正数序列
- 和为s的连续整数序列
- HtmlUnit实现ajax网络爬虫
- 由一个论坛帖子, 解决udp 服务器无法返回数据给第一个客户端的问题
- bluez plugins
- asd
- 强大的sublim-text2/3 注册方法 (for Windows x64)
- 和为指定值的连续序列
- js常用函数
- PCI 总线 协议 基础 详解
- JavaScript实用功能代码片段整理二
- Android基于Cling开发DLNA应用
- ubuntu 开机黑屏 (设置android编译环境时导致该问题)
- BlueZ源代码阅读:Bluetoothd启动分析
- 数学是成就卓越开发人员的必备技能
- poj-2777 线段树lazy标记+位运算