84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
怎么求呢??想不出
闭关修行中......
可以这样计算:
>>> num = 0 >>> for i in range(100): ... if i % 2 == 0: ... num = num - i ... else: ... num = num + i ... >>> num 50
另外,由于是前1个数字减去后1个数字,因此2个数值之间的和为-1,而99/2=49.5,因此,共有49对,其结果为-49,再与99相加可以得到99-49=50
粗略的看了一下,前面几个答案都使用了for循环,个人觉得能少用就少用吧,尽量把时间变成O1。假设参数为n,就是最大的那个数,并且都大于0,这里为99
for
当n为奇数时,结果为正,result = ((n - 1) / 2) * (-1) + n当n为偶数时,结果为负,也就是result = (n / 2) * (-1)所以,答案就出来了。。
def compute(n): if n % 2 is 1: return int(((n - 1) / 2) * (-1) + n) else: return int((n / 2) * (-1))
>>> rslt=0 >>> for n in range(1,100): rslt += n*(-1,1)[n&1] >>> rslt 50
>>> sum(( n*(-1,1)[n&1] for n in range(1,100) )) 50
>>> sum((sum(range(1, 100)[::2]), -sum(range(1, 100)[1::2]))) >>> 50 >>> # functools和itertools是你最强大的利器。
# 定义输出字符串 aaa = '' # 定义计算结果 bbb = 0 for i in range(1,100): aaa += str(i) if i % 2 == 0: aaa += '+' bbb -= i else: aaa += '-' bbb += i print('字符串输出: \r\n %s \r\n计算结果: \r\n %s' % (aaa.rstrip('-'), bbb))
字符串输出: 1-2+3-4+5-6+7-8+9-10+11-12+13-14+15-16+17-18+19-20+21-22+23-24+25-26+27-28+29-30+31-32+33-34+35-36+37-38+39-40+41-42+43-44+45-46+47-48+49-50+51-52+53-54+55-56+57-58+59-60+61-62+63-64+65-66+67-68+69-70+71-72+73-74+75-76+77-78+79-80+81-82+83-84+85-86+87-88+89-90+91-92+93-94+95-96+97-98+99- 计算结果: 50
def get_sum(lo, hi): return sum(range(lo, hi+1, 2)) + sum(range(lo+1, hi, 2))
可以这样计算:
另外,由于是前1个数字减去后1个数字,因此2个数值之间的和为-1,而99/2=49.5,因此,共有49对,其结果为-49,再与99相加可以得到99-49=50
粗略的看了一下,前面几个答案都使用了
for
循环,个人觉得能少用就少用吧,尽量把时间变成O1。假设参数为n,就是最大的那个数,并且都大于0,这里为99
当n为奇数时,结果为正,result = ((n - 1) / 2) * (-1) + n
当n为偶数时,结果为负,也就是result = (n / 2) * (-1)
所以,答案就出来了。。
代码
结果