Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def solve(f, d, pointlist, totlength, lengthlist):
- if f >= 1: return pointlist[-1] - pointlist[0]
- traversed = 0
- currentpoint = 0
- while (traversed + lengthlist[currentpoint])/totlength < f:
- traversed += lengthlist[currentpoint]
- currentpoint += 1
- if d == 1:
- return pointlist[currentpoint] + (pointlist[currentpoint+1] - pointlist[currentpoint])*(f - (traversed / totlength))/(lengthlist[currentpoint]/totlength)
- else:
- return pointlist[currentpoint] + ((pointlist[currentpoint + 1] - pointlist[currentpoint])/(pointlist[-1] - pointlist[0])) * (solve((f - (traversed/totlength))/(lengthlist[currentpoint]/totlength), d - 1, pointlist, totlength, lengthlist) - pointlist[0])
- cases = int(input())
- for i in range(cases):
- pointnum = int(input())
- for m in range(pointnum):
- p = input().split()
- if m == 0:
- points = [int(p[0]) + int(p[1])*1j]
- totlength = 0
- lengthlist = []
- else:
- points.append(int(p[0]) + int(p[1]) * 1j)
- lengthlist.append(abs(points[-2]-points[-1]))
- totlength += abs(points[-2]-points[-1])
- d = int(input())
- f = float(input())
- x = (solve(f,d,points, totlength, lengthlist))
- print(x.real, x.imag)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement