[R1A] 最大奇数

  • 难度 入门
  • 时限 1s
  • 空限 512m
  • 模拟

数据规模:1n2×1051 \le n \le 2 \times 10^51Ai1091 \le A_i \le 10^9

思路

逐个读入 AiA_i,用 Aimod20A_i \bmod 2 \ne 0 判断是否为奇数,是则与当前答案取较大者。若所有数都不是奇数,答案保持初值 1-1,直接输出即可。

复杂度:时间 O(n)O(n),空间 O(1)O(1)

仓颉实现

import std.env.*
import std.convert.*

main(): Int64 {
    let reader = getStdIn()
    let n = Int64.parse(reader.readln().getOrThrow())
    let a = reader.readln().getOrThrow().split(" ", removeEmpty: true).map({ p => Int64.parse(p) })
    var ans: Int64 = -1
    for (i in 0..n) {
        if (a[i] % 2 != 0 && a[i] > ans) {
            ans = a[i]
        }
    }
    println(ans)
    return 0
}

要点:

  • 数组按题面在第二行一次性读入,行尾多余空格由 split(" ", removeEmpty: true) 过滤。
  • 答案初值设为 1-1,天然覆盖「没有奇数」的情况;Ai1A_i \ge 1 全为正数,mod2\bmod 2 判断奇偶不存在负数语义问题。