问题描述
78这个数可以表示为连续正整数的和,1+2+3,18+19+20+21,25+26+27。
输入描述
输入一个正整数 n(<=10000)
输入一个正整数 n(<=10000)
输出描述
输出 m 行(n有m种表示法),每行是两个正整数a,b,表示a+(a+1)+...+b=n。
对于多种表示法,a小的方案先输出。
输出 m 行(n有m种表示法),每行是两个正整数a,b,表示a+(a+1)+...+b=n。
对于多种表示法,a小的方案先输出。
样例输入
78
样例输出
1 12 18 21 25 27
测试代码
1 #include <stdio.h> 2 3 int main() 4 { 5 int n, sum = 0; 6 int a = 1, b = a + 1; 7 scanf("%d", &n); 8 while (b != a + 1 || sum < n) 9 { 10 if (sum < n) 11 { 12 b++; 13 } 14 else 15 { 16 a++; 17 b = a + 1; 18 } 19 sum = (a + b) * (b - a + 1) / 2; 20 if (sum == n) 21 { 22 printf("%d %d\n", a, b); 23 } 24 } 25 return 0; 26 }