Math is magic.
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