poj 1844 Sum 數學思維

2021-06-23 05:33:31 字數 405 閱讀 2583

題意:輸入s,問用1-n連續的數加減得到s,最小的n是多少。

演算法:

1、首先前n項和sum = (i+1)*i/2 必須大於s,因為如果即使全加都不能得到s,就不可能得到了。

2、res = sum-s,res必須是偶數才能通過改變符號使res = 0。

證明:如果res 是奇數,那麼 把n個數中+號變為-號是減掉2*i的,奇數減掉乙個偶數還是乙個奇數,不可能變為0。

p.s:思維還是不行o(╯□╰)o。。。看的poj討論版,之前一直在想狀態的表示與轉移。。。。

#include#include#includeusing namespace std;

int main()}}

return 0;

}

poj1844解題報告

題目大姨 乙個數t可以由1 2 3 4 n來表示,其中兩數之間或是加號或是減號。比如 12 1 2 3 4 5 6 7,12最小可由1 7這7個數以上述規則得到,現在給定乙個t,求按照上述規則可以表示t的最小n。sample input 12sample output 7思路 假設符號都為正,那麼表...

15 三數之和 3Sum

給定乙個包含 n 個整數的陣列nums,判斷nums中是否存在三個元素 a,b,c 使得 a b c 0 找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。例如,給定陣列 nums 1,0,1,2,1,4 滿足要求的三元組集合為 1,0,1 1,1,2 線性複雜度 class s...

LeetCode 四數之和(4Sum)

給定乙個包含 n 個整數的陣列 nums 和乙個目標值 target,判斷 nums 中是否存在四個元素 a,b,c 和 d 使得 a b c d 的值與 target 相等?找出所有滿足條件且不重複的四元組。注意 答案中不可以包含重複的四元組。示例 給定陣列 nums 1,0,1,0,2,2 和 ...