0
0

paizaラーニング解答: ループメニュー2[Ruby]

Posted at

ループメニュー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
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0