Maison > Questions et réponses > le corps du texte
天蓬老师2017-04-18 10:19:08
Il peut être calculé comme ceci :
>>> num = 0
>>> for i in range(100):
... if i % 2 == 0:
... num = num - i
... else:
... num = num + i
...
>>> num
50
De plus, puisqu'il s'agit du premier nombre moins le dernier nombre, la somme entre les deux valeurs est -1, et 99/2=49,5 Il y a donc 49 paires au total, et le résultat est -. 49. L'ajouter à 99 nous donne 99-49=50
迷茫2017-04-18 10:19:08
Après un rapide coup d'œil, les réponses précédentes utilisaient toutes des for
boucles. Personnellement, je pense que vous devriez les utiliser moins si vous le pouvez, et essayer de réduire le temps jusqu'à O1.
Supposons que le paramètre soit n, qui est le plus grand nombre, et que les deux soient supérieurs à 0, ici il est 99
n | result |
---|---|
1 | 1 |
2 | -1 |
3 | 1 |
4 | -2 |
5 | 3 |
6 | -3 |
Quand n est un nombre impair, le résultat est positif, résultat = ((n - 1) / 2) * (-1) + n
Quand n est un nombre pair, le résultat est négatif, c'est-à-dire , résultat = (n/2) * (-1)
Donc, la réponse est sortie. .
def compute(n):
if n % 2 is 1:
return int(((n - 1) / 2) * (-1) + n)
else:
return int((n / 2) * (-1))
PHP中文网2017-04-18 10:19:08
>>> 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
阿神2017-04-18 10:19:08
>>> sum((sum(range(1, 100)[::2]), -sum(range(1, 100)[1::2])))
>>> 50
>>> # functools和itertools是你最强大的利器。
迷茫2017-04-18 10:19:08
# 定义输出字符串
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
PHP中文网2017-04-18 10:19:08
def get_sum(lo, hi):
return sum(range(lo, hi+1, 2)) + sum(range(lo+1, hi, 2))