ループメニュー2
STEP: 1 未知数個の数の受け取り
a = gets.split.map(&:to_i)
puts a
STEP: 2 未知数個の文字列の受け取り
a = gets.chomp.split
puts a
STEP: 3 奇数だけ出力
n = gets.to_i
a = gets.split.map(&:to_i)
a.each do |i|
if i.odd?
puts i
end
end
STEP: 4 割り切れる数だけ出力
n = gets.to_i
a = gets.split.map(&:to_i)
a.each do |i|
if i % 3 == 0
puts i
end
end
FINAL問題 偶奇の判定
n = gets.to_i
a = gets.split.map(&:to_i)
a.each { |i| puts i.even? ? "even" : "odd" }
STEP: 1 各桁の和
n = gets.split('').map(&:to_i)
puts n.sum
STEP: 2 カウント変数を使った計算
n = gets.to_i
m = gets.split.map(&:to_i)
for i in 0...n
puts m[i] * (i + 1)
end
STEP: 3 2 で何回割れる?
n = gets.to_i
count = 0
while n.even?
n /= 2
count += 1
end
puts count
STEP: 4 任意の数で何回割れる?
n, m = gets.split.map(&:to_i)
count = 0
while n % m == 0
n /= m
count += 1
end
puts count
STEP: 5 10 進数から 2 進数に変換
n = gets.to_i
puts n.to_s(2)
参考
STEP: 6 10 進数から M 進数に変換
n, m = gets.split.map(&:to_i)
puts n.to_s(m)
STEP: 7 N が M ずつ増えたときにいつ K を越える?
n, m, k = gets.split.map(&:to_i)
count = 0
while n <= k
n += m
count += 1
end
puts count
STEP: 8 毎日増加するお金
a, b = gets.split.map(&:to_i)
count = 0
while a <= b
a += a / 10
count += 1
end
puts count
STEP: 9 階乗の計算
n = gets.to_i
puts (2..n).inject(:*)
inject(:*)で配列の要素同士を掛け算できます。
STEP: 10 階乗の末尾に 0 はいくつ付く?
n = gets.to_i
count_zero = 0
while n > 0
count_zero += n / 5
n /= 5
end
puts count_zero
# ループ処理の中身
# 1ループ目
# count_zero = 20
# n = 20
# 2ループ目
# count_zero = 24
# n = 4
# 3ループ目
# 4 / 5は0.8。小数点以下は切り捨てのため 24 + 0 = 24
# count_zero = 24
# n = 0
paizaの解説をよく読まないと理解しにくいかも。
STEP: 11 加算された数列の最大値
n = gets.to_i
a = gets.split.map(&:to_i)
ans = 0
(0...n).each do |i|
ans = [a[i] + i + 1, ans].max
end
puts ans
STEP: 12 加算された数列の最小値
n = gets.to_i
a = gets.split.map(&:to_i)
ans = 1000
(0...n).each do |i|
ans = [a[i] + i + 1, ans].min
end
puts ans
STEP: 13 1 はどこにある?
n = gets.to_i
a = gets.split.map(&:to_i)
n.times do |i|
if a[i] == 1
puts i + 1
end
end
STEP: 14 約数の個数
n = gets.to_i
ans = 0
(1..n).each do |i|
if n % i == 0
ans += 1
end
end
puts ans
FINAL問題 約数の列挙
n = gets.to_i
(1..n).each do |i|
if n % i == 0
puts i
end
end