algorithm/problem solving

acmicpc.net 10827, 11060(DP), 1699(DP)

qkqhxla1 2016. 10. 8. 14:33

https://www.acmicpc.net/problem/10827


a^b를 어떻게 정확하게 구현할수 있을까? 소숫점을 없애고 큰 수 상태로 곱셈을 한다.


그 이후에 문자열로 만들어서 소수점 처리를 해주면 된다.

# -*- encoding: cp949 -*-
a,b=raw_input().split()
p = len(a[a.index('.')+1:])
a = a.replace('.','')
result = str(int(a)**int(b))
p=str((10**p)**int(b))
index = len(result)-len(p)+1
if index >=0:
    print result[:index]+'.'+result[index:]
else:
    print '0.'+'0'*(-index)+result

https://www.acmicpc.net/problem/11060

# -*- encoding: cp949 -*-
n=input()
ju=map(int,raw_input().split())
dp=[9999999999 for i in xrange(1500)]
dp[0] = 0
for i in xrange(n):
    if ju[i]!=0:
        for j in xrange(i+1,i+1+ju[i]):
            dp[j] = min(dp[i]+1, dp[j])
#print dp[:n]
print dp[n-1] if dp[n-1]!= 9999999999 else -1

https://www.acmicpc.net/problem/1699

# -*- encoding: cp949 -*-
from math import sqrt
n=input()
dp=[i for i in xrange(100001)]
for i in xrange(2,n+1):
    for j in xrange(2,i):
        if j*j>i:break
        dp[i] = min(dp[i], 1+dp[i-j*j])
#print dp[:n+4]
print dp[n]