洛谷 P1147 連續自然數和

2021-10-02 01:54:16 字數 707 閱讀 6149

p1147 連續自然數和

設一段自然數的首項為a1,末項為a2,則這段自然數之和為:

sum =(a1 + a2) * (a2 - a1 + 1) / 2 = m

即(a1 + a2) * (a2 - a1 + 1) = 2m

可以把2m分解成兩個數之積,假設分成了兩個數k1,k2,且k12 - a1 + 1 = k1

(2)a1 + a2 = k2

解得:a1 = ( k2 - k1 + 1 ) / 2 , a2 = ( k1 + k2 - 1 ) / 2

要保證a1和a2都為自然數,k2和k1必須是乙個奇數,乙個偶數

不過有一種特殊情況,就是a1 = a2的情況,這種情況是不允許的

即(k2-k1+1)/2 ≠ (k1+k2-1)/2,解得k1≠1

#include

#include

#include

#include

typedef

long

long ll;

using namespace std;

int m,k1,k2;

intmain()

}return0;

}

洛谷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的...