rt,一关
题目描述
时间限制:1s 空间限制:65536KB
描述
给出一个自然数M.找到所有连续的自然段,其总和为M.
例如:M = 10000
1998+1999+2000+2001 +2002= 10000
输入格式
一个自然数M. 10 <= M <= 2000000
输出格式
每行包含两个自然数,表示连续自然段的开始和结束,用空格分隔。所有行根据第一个数字按从小到大升序排序,保证给定数据至少有一个解。
样本输入
10000
样本输出
18 142
297 328
388 412
1998 2002
提示
我的代码
#include<iostream>
using namespace std;
int main(){
long long m;
cin>>m;
for(int i=0;i<=m/2;i++)
{
for(int j=i+1;j<=m/2;j++)
{
long long ans=0;
for(int k=i;k<=j;k++)
{
ans=ans+k;
if(ans>m) break;
}
if(ans>m) break;
else if(ans==m) cout<<i<<" "<<j<<endl;
}
}
return 0;
}