題意:輸入乙個n,求連續幾個數加起來等於n,輸出這幾個連續的數的第乙個和最後乙個。10<=n<=2000 000
由於n巨大,雙重暴力顯然超時,網上有很多通過長度用公式的寫法,沒想到乙個等差能被翻出很多花樣,深表佩服。
不過那些看起來很nb的公式我是推不出來,還是用尺取法靠譜點,時間複雜度也是o(n
)
#include#includep1147#include
#include
#include
#include
#include
#define ll long long
#define inf 0x3f3f3f3f
using
namespace
std;
intn;
intmain()
else
if(sum
else}}
return0;
}
P1147 連續自然數和
對乙個給定的自然數m,求出所有的連續的自然數段,這些連續的自然數段中的全部數之和為m。例子 1998 1999 2000 2001 2002 10000,所以從1998到2002的乙個自然數段為m 10000的乙個解。輸入格式 包含乙個整數的單獨一行給出m的值 10 m 2,000,000 輸出格式...
P1147 連續自然數和
對乙個給定的自然數m,求出所有的連續的自然數段,這些連續的自然數段中的全部數之和為m。例子 1998 1999 2000 2001 2002 10000,所以從1998到2002的乙個自然數段為m 10000的乙個解。輸入格式 包含乙個整數的單獨一行給出m的值 10 m 2,000,000 輸出格式...
P1147 連續自然數和
對乙個給定的自然數mm,求出所有的連續的自然數段,這些連續的自然數段中的全部數之和為mm。例子 1998 1999 2000 2001 2002 100001998 1999 2000 2001 2002 10000,所以從19981998到20022002的乙個自然數段為m 10000m 1000...