Assuming that we don't need to get the monkeys back, and we can't just send one monkey, we can send 'carrier monkeys' to go e.g. 50 miles, wait for the next monkey, and give them their remaining bananas. If the distance the carrier monkey goes is x, then x+100 (since the actual monkey getting the bananas there is going 100 miles) is the amount of bananas needed. To make it as efficient as possible, we want (x+100) to be a factor of 300 so we have no bananas left. Our options are x=0 (which wouldn't work as stated) and x=50. If x=50, we spend 150 bananas. The carrier monkey goes for 50, and the actual monkey meets the carrier monkey. The carrier monkey gives the actual monkey their 100-50=50 remaining bananas, and the actual monkey now has 100 bananas. They go 50 miles and have 100-50=50 bananas remaining, giving 50 bananas. Since 300/150=2, we can repeat this to get 50+50=100 bananas delivered