icpc:problems:luogup1147
problems | |
---|---|
名称 | 连续自然数和 |
题目编号 | P1147 |
题目链接 | luogu.com.cn/… |
来源 | Luogu |
算法分类 | 前缀和, 差分, 双指针 |
难易程度 | 容易 |
连续自然数和
想法
先计算1至n的前缀和,使用双指针维护一个差分,使得两个指针指向的区间始终小于等于n,当等于n时输出答案。
代码实现
#include<cstdio> const int N = 2e6+10; long long int line[N]; int main() { int n; scanf("%d", &n); for(int i=1; i<=n; i++) { line[i] = line[i-1] + i; } int last = 1; for(int i=1; i<n; i++) { while(line[i] - line[last] > n)last++; if(line[i] - line[last] == n) printf("%d %d\n", last+1, i); } return 0; }
/app/www/public/data/pages/icpc/problems/luogup1147.txt · 最后更改: 2024/02/18 15:06 由 温婕莺