思路及代码
双指针 处理头尾元素简化遍历连续求和
//input n int 2<= <=10000
#include<iostream>
using namespace std;
int main(){
int n;
cin >> n;
//solution
//left=1,right=2,sum=left+right;
int left = 1, right = 2, sum = left + right;
while (right <= n/2+1){
//sum < n: sum+=(++right)
//sum = n: cout left, right;sum -= (left++)
//sum > n: sum -= (left++)
if (sum < n){
sum += (++right);
}else if (sum == n){
cout << left << ' ' << right <<endl;
sum -= (left++);
}else{
sum -= (left++);
}
}
return 0;
}
参考:无
收获:无
菜菜,不是教程,做题和学习记录