[問題] 1+2-3+4-5+6-....+n

看板C_and_CPP (C/C++)作者 (好大一隻雞)時間16年前 (2009/09/27 18:42), 編輯推噓9(907)
留言16則, 12人參與, 最新討論串1/1
1+2+3+4...+n我知道如何寫 但是1+2-3+4-5+6-....+n使用whilev寫就遇到麻煩... 老師說要設偶數、奇數,但是想一想還有開頭的1這個數 這該如何解決? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 120.113.121.97

09/27 18:45, , 1F
初始值設1 用POW
09/27 18:45, 1F

09/27 18:46, , 2F
你老師的意思是 一個++ 一個-- ?
09/27 18:46, 2F

09/27 18:46, , 3F
把1+3+...+n 減掉 2+4+...+n-1 也行
09/27 18:46, 3F

09/27 18:53, , 4F
有另外一種算法...
09/27 18:53, 4F

09/27 18:55, , 5F
開頭很麻煩那就開頭另外加, 從2開始寫不就得了....@_@"
09/27 18:55, 5F

09/27 19:00, , 6F
1+(2-3)+(4-5)+(6-7)+...
09/27 19:00, 6F

09/27 19:04, , 7F
設1為初值; +2+4+6...為一組; -3-5-7...為一組
09/27 19:04, 7F

09/27 20:16, , 8F
另設一值 k:-1,1,-1,1.. 然後sum加k*i
09/27 20:16, 8F

09/27 20:18, , 9F
老實說我覺得大家想到太多數學方法優化了, 這題目感覺上
09/27 20:18, 9F

09/27 20:19, , 10F
只是要練習迴圈加奇偶數這種基本的判斷而已....@_@"
09/27 20:19, 10F

09/27 20:21, , 11F
真的XD
09/27 20:21, 11F

09/28 00:11, , 12F
r=1,i=1; while(++i<=n) r+=i*( (i&0x01)?(-1):(1) );
09/28 00:11, 12F

09/28 01:02, , 13F
printf("%d",n%2?-(n/2)+1:n/2+2);
09/28 01:02, 13F

09/28 08:03, , 14F
推樓上,真簡化
09/28 08:03, 14F

09/28 11:21, , 15F
樓樓上XD
09/28 11:21, 15F

09/28 14:37, , 16F
bc5678 正解
09/28 14:37, 16F
文章代碼(AID): #1Alq67b2 (C_and_CPP)
文章代碼(AID): #1Alq67b2 (C_and_CPP)