practivceAlgorithm/백준
[백준][Python] 15824 너 봄에는 캡사이신이 맛있단다.
findTheValue
2021. 8. 24. 19:17
핵심은 power함수의 logN화.
1번 50점.
import sys
input = sys.stdin.readline
N = int(input())
menus = sorted(map(int,input().split()))
MOD = 1000000007
minus = 0
for i in range(N-1):
for j in range(i+1,N):
minus += ((menus[j] - menus[i])*(2**(j-i-1)))%MOD
print(minus%MOD)
2번 50점
N = int(input())
menus = sorted(map(int,input().split()))
MOD = 1000000007
minus = 0
plus = 0
for i in range(N):
minus += (menus[i]%MOD)*pow(2,N-i-1,MOD)
plus += (menus[i]%MOD)*pow(2,i,MOD)
plus %= MOD
print((plus-minus)%MOD)
3번 250점 : 제곱을 재귀로 했는데 분할 정복으로 해도 될것임.
import sys
input = sys.stdin.readline
# 제곱을 재귀로.. 분할정복으로 해도 될듯?
def pow(a,b,c):
if b==0:
return 1
if b==1 :
return a%c
if b%2==0:
return pow(a**2%c,b//2,c)
else:
return a*pow(a**2%c,b//2,c)%c
N = int(input())
menus = sorted(map(int,input().split()))
MOD = 1000000007
minus = 0
plus = 0
for i in range(N):
minus += (menus[i]%MOD)*pow(2,N-i-1,MOD)
plus += (menus[i]%MOD)*pow(2,i,MOD)
plus %= MOD
print((plus-minus)%MOD)