C++78这个数可以表示为连续正整数的和 18+19+20+2125+26+27。输入一个正整数 nn=10000输出 m 行n有m种表示法每行是两个正整数ab表示a+a+1++b=n对于多种表示法a小的方案先输出。输入描述:一行一个正整数n输出描述:m行每行都是两个正整数表示区间样例1:输入:78输出:1 1218 2125 27
#include
int main() { int n; cin >> n; int a = 1, b = 2; // 初始区间为[1,2] while (a <= n / 2) // a最大为n的一半 { int sum = (a + b) * (b - a + 1) / 2; // 区间和公式 if (sum == n) { cout << a << ' ' << b << endl; b++; // 寻找下一个区间 } else if (sum < n) b++; else a++; } return 0; }
原文地址: http://www.cveoy.top/t/topic/gIHz 著作权归作者所有。请勿转载和采集!