C++求连续数列之和为S的数组里面所有组合(根据公式S=(x+y)*n/2优美实现)
来源:互联网 发布:花儿乐队知乎解散 编辑:程序博客网 时间:2024/04/28 14:42
//博主mingliang37的思想,我后来想明白了,整理了一下. #include <iostream>using namespace std;//输出所有和为S的连续整正数序列.//x.......y(这是一个连续序列)//x+.....+y=S;//还记得小时候老师要我们做的一道题吗?求1+2+3+...+100=?//(1+100).100/2=5050.//所以我们假设这个连续正整数序列是从x开始到y结束,总共有n个数字//那么S=(x+y)*n/2,且y-x=n-1;//1----------S=(x+y)*n/2.//2----------y-x=n-1;//(2x+n-1)*n/2=S//2S/n+1-n=2x//2S+n-n*n=2n*x//x=(2S+n+n*n)/2n--->这是x序列开始位置,用n(序列长度)来替换x。//因为x>0,所以2S+n-n*n>0; void Grial(int sum){for(int i=1;i<sum;i++){int S=2*sum+i-i*i;//下面的所有推算都是由公式.i是边的长度.//2S+n+n*n=2*n*x及x>0得到.//边(n)=(2S+n+n*n)%(2*x)==0时表示从x位置开始有整数长度的n可以满足要求.//如果!=0则表示该位置不满足要求,i++,继续开始.if(S<0)break;if(S%(2*i)!=0){continue;}int x=S/(2*i);for(int j=0;j<i;j++){cout<<x+j<<" ";}cout<<endl;}}int main(){Grial(100);return 0;}
1 0
- C++求连续数列之和为S的数组里面所有组合(根据公式S=(x+y)*n/2优美实现)
- 求 数组里 和为s的所有组合
- 打印和为N的所有连续数列组合
- 求和为S的所有连续正数数列
- 算法导论9.3-8-设X[1..n]和Y[1..n]为两个数组,每个都包含n个已排好序的数,给出一个求数组X和数组Y中所有2n个元素的中位数
- 回溯---数组序列中所有和为S的组合
- 从数组中找出所有组合为s的数
- 求S=1+2+3+…+n之和,S<1000的最大n的值
- 求数列s(n)=s(n-1)+s(n-2)的第n项的值。其中s(1)=s(2)=1。要求任意给定n,输出s(n)
- 网易面试题:求连续几个自然数之和为S的序列
- 给定长度为n的整数数列:a0,a1,..,an-1,以及整数S。这个数列会有连续的子序列的整数总和大于S的,求这些数列中,最小的长度。
- 41-所有和为s的连续正数序列/递增数列中和为s的两个数字
- 和为s的连续正整数数列 and 未排序正数数组中和为s的最长子数组长度
- 一个有序数组数组,给出和为s的两个数字和连续正数数列
- 把n个骰子扔在地上,所有骰子朝上一面的点数之和为S
- s求数组的连续最小区域
- 剑指Offer之和为S的连续正数序列
- 牛客网刷题之和为S的连续正数序列
- hdu_2066 一个人的旅行
- Ubuntu服务器配置添加新用户
- VC编程实现色彩空间RGB与HSB(HSV)相互转换
- Android 5.0 idmap管理
- 百度地图,marker添加右键菜单
- C++求连续数列之和为S的数组里面所有组合(根据公式S=(x+y)*n/2优美实现)
- List/Datagrid与滚动条的关联
- Android Studio 1.2版安装设置图文教程
- 第八周项目三--分数类中的运算符重载
- VC编程使用HSB(HSV)色彩空间实现色差比较
- Android学习笔记(四)Intent
- 黑马程序员__Java基础__判断、循环、函数
- VC编程实现位图处理类(显示位图、加载位图、获取/设置像素点颜色)
- Linux开启mysql远程连接的设置步骤