求1-2+3-4+5……-100 = ?
邏輯整理:
-- 本質上可以轉換一下,1+3+5+……+99 -(2+4+……+100)
加減部分間隔都為2,先求1+3+5+……+99的值,
再求2+4+……+100的值,減去結果就出來了
-- 還可以如此轉換 1*[(-1)**(1+1)] +2*[(-1)**(1+2)]+……+100[(-1)**(1+100)]
通過-1來進行+ - 符號的轉變
-- 最簡單的方法是分開,1 – 2 = -1 ,3 – 4 = -1 ,
依次下去,其實答案已經出來了 結果等於-50
程序化:
第一種方法:
#!/usr/bin/python3
__author__ = 'beimenchuixue'
__blog__ = 'http://www.cnblogs.com/2bjiujiu/'
def sum_go(sum_to):
sum_count_1 = 1 # 計算
sum_1 = 0 # 初始和值
sum_count_2 = 2
sum_2 = 0
while True:
if sum_count_1 == sum_to + 1: # 初始值以1開始
break
sum_1 += sum_count_1 # 前者計算累計
sum_count_1 += 2 # 前者和累計
sum_2 += sum_count_2
sum_count_2 += 2
return sum_1 - sum_2 # 結果兩者相減
if __name__ == '__main__':
result = sum_go(sum_to=100)
print(result)
第二種方法:
#!/usr/bin/python3
__author__ = 'beimenchuixue'
__blog__ = 'http://www.cnblogs.com/2bjiujiu/'
def sum_go(sum_to):
sum_all = 0
for i in range(1, sum_to+1):
sum_all += i * (-1) ** (1 + i)
return sum_all
if __name__ == '__main__':
result = sum_go(sum_to=100)
print(result)
