Skip to content

Instantly share code, notes, and snippets.

@whatalnk
Created September 28, 2018 03:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save whatalnk/e303150e6de634f0d3753e0d9d1b23db to your computer and use it in GitHub Desktop.
Save whatalnk/e303150e6de634f0d3753e0d9d1b23db to your computer and use it in GitHub Desktop.
AtCoder ABC #084 D 2017-like Number
require 'prime'
Q_MAX = 10**5
pm = Array.new(Q_MAX + 2, false)
Prime.each(Q_MAX+1) do |n|
pm[n] = true
end
like2017 = Array.new(Q_MAX + 2, 0)
(Q_MAX+1).times do |i|
if i.odd? && pm[i] && pm[(i+1)/2]
like2017[i] = 1
end
end
(Q_MAX + 1).times do |i|
like2017[i+1] += like2017[i]
end
q = gets.chomp.to_i
q.times do
l, r = gets.chomp.split(" ").map(&:to_i)
puts like2017[r] - like2017[l-1]
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment