描述
一个数N为从1开始K个连续整数的和,求这K个数。
输入描述
一个数N,N≤10^6
输出描述
从1到k,共k个数,倒序输出,以逗号隔开。如果n不能表示为k个连续整数的和,输出-1;
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| #include <bits/stdc++.h> using namespace std;
int main() { int m,j; cin >> m; int tmp[m / 2 + 4]; for (int i = 1; i <= m / 2 + 1; i++) { tmp[i] = tmp[i - 1] + i; } for (int i = 1; i < m / 2 + 1; i++) { for (j = i + 1; i < j && j <= m / 2 + 1; j++) { if (tmp[j] - tmp[i - 1] == m) { for(int x = j;x>i;x--){ cout << x << ","; } cout << i; break; } if (tmp[j] - tmp[i - 1] > m){ cout << -1; break; } } if (tmp[j] - tmp[i - 1] == m) { break; } if (tmp[j] - tmp[i - 1] > m){ break; } } return 0; }
|