洛谷P1147 連續自然數的和 雙指標掃瞄

2021-08-22 08:34:00 字數 576 閱讀 6131

雙指標掃瞄適用於有序陣列,兩個指標或同向或反向

對於這道題,若sum > m 則移動左指標,若sum < m,說明總和小了,移動右指標

當左端點超過m/2時,之後的連續自然數的和一定大於m

然而右端點超過後卻不能說明總和大於m,因為若右端點只有乙個數 那麼左端點還是可以總和小於m/2的

而且m/2在c++下取整了。。。所以寫右端點小於等於m/2最後可能取到小於m/2

#include 

#include

#include

#include

using

namespace

std;

#define debug(x) cerr << #x << "=" << x << endl;

const

int maxn = 2000000 + 10;

int i,j,sum,m;

int main() else

if (sum > m) else

if(sum == m)

}return

0;}

洛谷P1147 連續自然數和

連續自然數和 題目描述 對乙個給定的自然數m,求出所有的連續的自然數段,這些連續的自然數段中的全部數之和為m m 2000000 例子 1998 1999 2000 2001 2002 10000,所以從1998到2002的乙個自然數段為m 10000的乙個解。分析可以把連續自然數段看成乙個等差數列...

洛谷 P1147 連續自然數和

對乙個給定的自然數m,求出所有的連續的自然數段,這些連續的自然數段中的全部數之和為m。例子 1998 1999 2000 2001 2002 10000,所以從1998到2002的乙個自然數段為m 10000的乙個解。包含乙個整數的單獨一行給出m的值 10 m 2,000,000 每行兩個自然數,給...

洛谷 P1147 連續自然數和

前言 只為轉c 而寫個解題報告。題目描述 對乙個給定的自然數m,求出所有的連續的自然數段,這些連續的自然數段中的全部數之和為m。例子 1998 1999 2000 2001 2002 10000,所以從1998到2002的乙個自然數段為m 10000的乙個解。輸入格式 包含乙個整數的單獨一行給出m的...