牛客--Ruby(二)

在这里插入图片描述

include 'Math'
num = ""
while num = gets
    num.chomp!
    num = num.to_i
    i = 2
    #求质数用最直接的大循环解决
    while i <= num			#判断条件也可以写成i <= num/2  (i <= Math.sqrt(num))
        if num % i == 0
            print i.to_s, ' '
            num /= i
        end
        if num % i != 0
            i += 1
        end
    end
    print "\n"
end

Ps:这里选用最直接的循环处理,当数字较大时比较费时,可以参考网上的很多其他语言的算法解答。可以参考:

https://program-think.blogspot.com/2011/12/prime-algorithm-1.html

在这里插入图片描述

str = ""
while str = gets
    str.chomp!
    result = []
    if str.size >= 8
        flag = 0
        while flag <= str.size
            result << str[flag, 8]
            flag += 8
        end
        if result[result.size-1].size < 8
            len = 8 - result[result.size-1].size
            for i in 1..len
                result[result.size-1] += "0"
            end
        end
        result.each do |item|
            if item != "00000000"			#可能存在全为0的字符串!
                print item, "\n"
            end
        end
    end
    if str.size < 8
        llen = 8 - str.size
        for j in 1..llen
            str += "0"
        end
        if str != "00000000"			#可能存在全为0的字符串!
            print str, "\n"
        end
    end
end

Ps:注意!!!以上两题要求的输出均为字符串,但输出格式中无引号,若使用p方法或puts方法,均会由于引号导致系统判别答案错误!!因此此处只能使用print方法!!
在这里插入图片描述

num = gets
num = (num.chomp!).to_i
data = []
for i in 0..num-1
    data << gets
    data[i].chomp!
    data[i] = data[i].split(" ")
    for j in 0..1
        data[i][j] = data[i][j].to_i
    end
end
result = []
while num > 0
    if result[data[num-1][0]] == nil
        result[data[num-1][0]] = data[num-1][1]
    elsif result[data[num-1][0]] != nil
        result[data[num-1][0]] += data[num-1][1]
    end
    num -= 1
end
for k in 0..result.size-1
    if result[k] != nil
        print k, " ", result[k], "\n"
    end
end

在这里插入图片描述

num = ""
while num = gets
    num.chomp!
    num.reverse!
    result = []
    for i in 0..num.size-1
        result[i] = num[i].to_i
    end
    result.uniq!
    for j in 0..result.size-1
        print result[j]
    end
    print "\n"
end

在这里插入图片描述

str = ""
while str = gets
    str.chomp!
    num = 0
    result = []
    for j in 0..str.size-1
        result[j] = str[j]
    end
    result.uniq!
    for i in 0..result.size-1
        num += 1 if (result[i].ord >= 0) && (result[i].ord <= 127)
    end
    p num
end

在这里插入图片描述

str = ""
while str = gets
    str.chomp!
    str = str.split(" ")
    len = str.size-1
    while len >= 0
        if len > 0
            print str[len], " "
        else
            print str[len], "\n"
        end
        len -= 1
    end
end

在这里插入图片描述

num = gets
result = []
while str = gets
    str.chomp!
    result.push(str)
end
result.sort!
for i in 0..result.size-1
    print result[i], "\n"
end

Ps:对字符串的sort本身就是进行字典排序!
在这里插入图片描述

num = ""
while num = gets
    num.chomp!
    num = num.to_i
    number = 0
    while num > 0
        number += 1 if (num % 2) != 0
        num /= 2
    end
    p number
end
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值