100题_26 和为n连续正数序列
输入一个正数n,输出所有和为n连续正数序列。
例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5、4-6和7-8。
这题还比较简单,从头开始,少了就往后加,多了就往前减。代码如下:
#include <iostream> using namespace std; void print(const int &start, const int &end) { cout<<"="; for (int i = start; i <= end; i++) { cout<<i; if (end != i) cout<<'+'; } } void printConSum(int n) { cout<<n; int start = 1, sum = 0; for (int i = 1; i <= (n + 1) / 2; i ++) { sum += i; if (sum == n) { print(start, i); sum -= start++; } while (sum > n) { sum -= start++; } if (sum == n) { print(start, i); sum -= start++; } } cout<<endl; } int main() { printConSum(15); return 0; }
本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名小橋流水(包含链接)。如您有任何疑问或者授权方面的协商,请给我发邮件。