Math is magic.

Jimmy (xiaoke) Shen
1 min readDec 18, 2019

--

891. Sum of Subsequence Widths

https://leetcode.com/contest/weekly-contest-98/problems/sum-of-subsequence-widths/

#solution 1
class Solution:
def sumSubseqWidths(self, A: List[int]) -> int:
A.sort(reverse=True)
geo_seq_sum, xs = 0, [0]
for i in range(len(A)-1):
geo_seq_sum += 1<<i
xs.append((xs[-1]<<1) + (A[i]-A[i+1])*geo_seq_sum)

return sum(xs) % (10**9+7)
# solution 2
class Solution:
def sumSubseqWidths(self, A: List[int]) -> int:
A.sort()
res=0
for i in range(len(A)):
res <<= 1
res += A[~i] - A[i]
res %= (10**9+7)
return res

858. Mirror Reflection

829. Consecutive Numbers Sum

https://leetcode.com/problems/consecutive-numbers-sum/

class Solution:
def consecutiveNumbersSum(self, N: int) -> int:
if N==1:return 1
res = 1
"""
x+0 = n
x+0+x+1 = n
x+0+x+1+x+2 = n
"""
cusum = 0
for i in range(1, N):
cusum += i
quo, remainder = divmod(N-cusum, i+1)
if not quo:break
if not remainder:
res += 1

return res

--

--

No responses yet