지문이 길어서 찾아보고 한다고 이해하는데 반나절은 걸린듯한 문제. 요약하면 a*b^(-1) = a*b^(X-2)%1000000007이므로 a*b^(X-2)%1000000007를 시간 안에 해결해야 하는 문제다. 재귀로 해결했다. S=1000000007 def ans(n,s): return s*mul(n,S-2)%S def mul(b,t): if t==1: return b%S if t%2==0: tmp=mul(b,t//2) return (tmp*tmp)%S else: return b*mul(b,t-1)%S SUM=0 m=int(input()) for _ in range(m): n,s=map(int,input().split()) SUM+=ans(n,s) SUM%=S print(SUM)
재귀
n을 입력하면 n줄에 해당하는 모양을 출력하면 되는 문제. 이전까지의 별찍기와는 달랐다. 나는 출력에만 고집해서 시간을 굉장히 많이 썼는데, 그게 상당히 어렵다는 것을 알게됐다. 모양을 배열로 접근해서 풀었어야 하는 문제. 예를 들어 n=3이면 3*5의 배열을 만들어야 한다. * * * * * * * * 그리고 다음 n=6이면, 6*11의 배열을 만들어야 한다. * * * * * * * * * * * * * * * * * * * * * * * * 중간을 기준으로 보면 첫번째 행의 *은 n=6일땐 5, n=3일때는 2이므로, n-1에 위치함을 알 수 있다. 그렇다면 다음 삼각형이 만들어지는 4번째 행의 위치는 어떤가? 첫번째 기준 값에서 각각 2만큼(n//2-1만큼) 떨어져 있음을 알 수 있다. 이를 통해..