问题描述
78这个数可以表示为连续正整数的和,++,+++,++。
输入一个正整数 n(<=)
输出 m 行(n有m种表示法),每行是两个正整数a,b,表示a+(a+)+...+b=n。
对于多种表示法,a小的方案先输出。
样例输入 样例输出
解题思路:
枚举i=1-n的数
以i为起点,枚举j=i-n的值,并累加j,当加j后的值大于n,跳出
输出i和j-1(j由于在循环中会多加一次),即累加该区间的值可以得到n
AC代码:
#include <stdio.h> int main(void)
{
int n;
int i,j,k;
scanf("%d",&n);
for (i = ; i <= n/ ; i ++)
{
k = ;/*用于计算累加值*/
for (j = i ; k+j <= n ; j ++)
{
k += j;
}
if (k == n)
{
printf("%d %d\n",i,j-);
}
} return ;
}