思路:
很顯然每個連續的序列都是等差數列,
那麼我們利用等差數列求和公式。
s=(a1+a1+k-1)k/2=(2·a1+k-1)*k/2;a1是首項,k是個數。
列舉k,首項最小為1,k最大,具體不說了,反正大致就是sqrt(2*n);
列舉量還是在平方以內
題外話:
這題就是沒有去想等差數列,等差數列公式和求和要熟練,以及變數都是一方影響另一方的思想也要有;
#include
using
namespace
std;
typedef
long
long ll;
const
int n=5e4+10;
int main()
}if(!flag)
puts("no solution");
return
0;}
51nod 1138 數學 等差數列
思路 很顯然每個連續的序列都是等差數列,那麼我們利用等差數列求和公式。s a1 a1 k 1 k 2 2 a1 k 1 k 2 a1是首項,k是個數。列舉k,首項最小為1,k最大,具體不說了,反正大致就是sqrt 2 n 列舉量還是在平方以內 題外話 這題就是沒有去想等差數列,等差數列公式和求和要熟...
51nod 1138 等差數列公式
給出乙個正整數n,將n寫為若干個連續數字和的形式 長度 2 例如n 15,可以寫為1 2 3 4 5,也可以寫為4 5 6,或7 8。如果不能寫為若干個連續整數的和,則輸出no solution。input 輸入1個數n 3 n 10 9 output 輸出連續整數中的第1個數,如果有多個按照遞增序...
51nod 1138 連續整數的和(等差數列)
基準時間限制 1 秒 空間限制 131072 kb 分值 10 難度 2級演算法題 給出乙個正整數n,將n寫為若干個連續數字和的形式 長度 2 例如n 15,可以寫為1 2 3 4 5,也可以寫為4 5 6,或7 8。如果不能寫為若干個連續整數的和,則輸出no solution。input 輸入1個...