问题描述
78这个数可以表示为连续正整数的和,1+2+3,18+19+20+21,25+26+27。
输入一个正整数 n(<=10000)
输出 m 行(n有m种表示法),每行是两个正整数a,b,表示a+(a+1)+...+b=n。
对于多种表示法,a小的方案先输出。
输入一个正整数 n(<=10000)
输出 m 行(n有m种表示法),每行是两个正整数a,b,表示a+(a+1)+...+b=n。
对于多种表示法,a小的方案先输出。
样例输入
78
样例输出
1 12
18 21
25 27
18 21
25 27
又想复杂了,直接暴力可过,还是没有养成暴力的思想。
1 #include <bits/stdc++.h> 2 using namespace std; 3 int main() { 4 int n; 5 cin >> n; 6 for(int i = 1; i < n; i++) { 7 int sum = 0; //每次都初始化sum的值 8 int x = i; //记住每次最开始的值 9 int j = i; //从i开始累加 10 while (sum < n) { 11 sum += j; 12 j++; 13 } 14 if (sum == n) { 15 cout << x << " " << j - 1 << endl; 16 } 17 } 18 return 0; 19 }