http://www.luogu.org/problem/show?pid=1147
利用了数学公式求等差数列之和公式(s1+sn)*n/2
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<queue>
#define ms(i,j) memset(i,j, sizeof i);
using namespace std;
int main()
{
int n;
scanf("%d", &n);
for (int i=1;i<=2000000;i++)
for (int j=i+1;j<=2000000;j++)
{
int s = (i+j)*(j-i+1)/2;
if (s==n) printf("%d %d\n", i,j);
if (s>n) break;
}
return 0;
}