https://axieyun.top/posts/28ef.html
应用
方法
小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为K的连续正数序列? Good Luck!
x
using namespace std;
int main() {
int k, temp = 0;
cin >> k;
for (int i = 1, j = 1; i < (k >> 1) + 1 && j < (k >> 1) + 1;) {
if (temp < k) temp += j, j++;
else if (temp > k) temp -= i, i++;
else {
for (int a = i; a < j; a++) cout << a << ' ';
cout << endl;
temp -= i;
i++;
}
}
return 0;
}