题目描述
自从泽泽参加了围棋班和编程班以后,不仅思维非常敏捷,而且有些难懂的数学问题他都能轻松解答,他爱上了数学。老师为了锻炼他,让他的思维能有突飞猛进的进步,给了他这样一题数学题:给你一个正整数N,请你找出N是由哪些若干个(两个或多个)连续的正整数的和得到。
输入
第一行输入一个正整数N。
输出
输出至少有一个答案,每个答案一行,每行输出这个答案中的第一个加数和最后一个加数。如果有多个答案,这些答案必须按第一个加数从小到大进行排列。(注:两个加数之间只有一个空格)
样例输入 1
6
样例输出 1
1 3
样例输入 2
27
样例输出 2
2 7
8 10
13 14
【数据范围约定】
对于60%的数据保证3≤N ≤1000000
对于80%的数据保证3≤N ≤100000000
对于100%的数据保证3≤N≤10000000000
因为原题链接需要密码,所以我只能这样
#include<bits/stdc++.h>
using namespace std;
long long n,ans;
int main()
{
cin>>n;
for(long long i=1;i<=n/2+1;i++){
long long sum=i;
for(long long j=i+1;j<=n/2+1;j++){
if(sum+j>n)break;
sum+=j;
if(sum==n)cout<<i<<" "<<j<<endl;
}
}
return 0;
}
帮帮孩子吧!