require 'set' $buf = [] def fill_buf; (s = gets) ? $buf = s.chomp.split : break while $buf.empty? end def has_next; fill_buf; !$buf.empty? end def get; fill_buf; $buf.shift end def geti; get.to_i end def getf; get.to_f end def getss(n = nil); n ? Array.new(n) { get } : begin fill_buf; $buf.shift(1e9) end; end def getis(n = nil); get_ss(n).map(&:to_i) end def getfs(n = nil); get_ss(n).map(&:to_f) end while has_next n = geti cand = Set.new u = Math.sqrt(n+1).to_i (1..u).select { |k| n % k == 0 }.each do |k| cand << "#{k}#{n/k}" cand << "#{n/k}#{k}" end # p cand p cand.size end