2 / 2
Nov 2016
a = gets.to_i
d = []
a.times do |t|
  d[t] = []
  b = gets.to_i
  if b < 4
  	b = (1..b).inject { |s, z| s * z }.to_s
  	d[t] = b.split('')[0]
  elsif b == 4
  	b = (1..b).inject { |s, z| s * z }.to_s
  	tmp = b.split('')
  	d[t] = [tmp[0], tmp[1]]
  elsif b == 5
  	b = (1..b).inject { |s, z| s * z }.to_s
  	tmp = b.split('')
  	d[t] = [tmp[1], tmp[2]]
  elsif b > 5 && b < 10
  	c = (1..(b-1)).inject { |s, z| s * z }.to_s.split('')
  	c.pop
  	e = c.pop
  	tmp = (e.to_i * b.to_i).to_s.split('')[1]
  	d[t] = [tmp, '0'].flatten
  elsif b >= 10
  	d[t] = ['0', '0']
  end
end

d.each_index do |i|
  if !d[i].nil? && d[i].size == 2
  2.times do |t|
    print d[i][t].to_i
    print " " if t.zero?
  end
  else
    print "0 ", d[i][0].to_i
  end
  print "\n" if i < d.size - 1
end

Wykorzystałem dwie zależności występujące w silni, pierwsza dotyczy liczb z przedziału 6 do 9 a druga dotyczy liczb większych od 10 włącznie.

Program przetestowałem i zwraca dobre wyniki a SPOJ zwraca błąd wykonania (NZEC) .

  • created

    Nov '16
  • last reply

    Nov '16
  • 1

    reply

  • 1.0k

    views

  • 2

    users

  • 2

    links