題目描述
描述 description
對乙個給定的自然數m,求出所有的連續的自然數段(連續個數大於1),這些連續的自然數段中的全部數之和為m。
例子:1998+1999+2000+2001+2002 = 10000,所以從1998到2002的乙個自然數段為m=10000的乙個解。
輸入輸入格式 input format
包含乙個整數的單獨一行給出m的值(10 <= m <= 1000000000)
輸出輸出格式 output format
每行兩個自然數,給出乙個滿足條件的連續自然數段中的第乙個數和最後乙個數,兩數之間用乙個空格隔開,所有輸出行的第乙個按從小到大的公升序排列,對於給定的輸入資料,保證至少有乙個解。
樣例輸入
10000
樣例輸出
18 142
297 328
388 412
1998 2002
一開始我是這樣寫的,然後超時了,看了大神的思路,瞬間懂了,就自己寫了一遍,當資料很大時,省下了求sum的重疊時間。
#include
using
namespace std;
intmain()
if(sum > m)
break;}
}return0;
}
思路就是:定個區間,求區間的和,如果小於m,說明還沒完,就把右區間擴大;大於m就把左區間縮小,直到等於m時,把左區間縮小,為後面準備。
#include
using
namespace std;
intmain()
if(sum + b > m)
if(sum + b == m)
}return0;
}
連續自然數和
題目描述 對乙個給定的自然數m,求出所有的連續的自然數段,這些連續的自然數段中的全部數之和為m。例子 1998 1999 2000 2001 2002 10000,所以從1998到2002的乙個自然數段為m 10000的乙個解。輸入輸出格式 輸入格式 包含乙個整數的單獨一行給出m的值 10 m 2,...
JZOJ 列舉 連續自然數和
對乙個給定的自然數m mm,求出所有的連續的自然數段,這些連續的自然數段中的全部數之和為mmm 樣例輸入10000樣例輸出18 142 297 328 388 412 1998 2002原本我是這樣寫的 include include using namespace std int n,k intr...
連續自然數平方和
22.連續自然數平方和 描述 提交自定義測試 題目描述 給你乙個數x,詢問有多少種連續自然數的平方和等於這個數,按照起始自然數由小到大的順序,輸出所有可能。輸入描述 輸入有多組,每組一行,乙個數x 輸出描述 對於每組資料,輸出多行 第一行,乙個數表示有多少種可能 以下每行輸出一種 第乙個數a是連續多...