数学パズル 緑 10 @ruby

data = []

File.open("q_10.txt") do |f|
  f.readlines.each do |row|
    data << row.split(',')[1].to_i
  end
end

N = 289

left = 1
right = data.max
center = (left + right) / 2

loop do
  sum = 0
  data.each do |i|
    sum += (i.to_f / center).ceil
  end
  if sum == N
    break
  elsif sum > N
    left = center
    center = (center + right) / 2
  else
    right = center
    center = (center + left) / 2
  end
end

data.each do |i|
  puts (i.to_f / center).ceil
end