和的奇偶性(洛谷P4702题题解,Java语言描述)

题目要求

P4702题目链接

在这里插入图片描述

分析

这游戏玩的看似博弈,其实是大水题,求和然后看是奇数偶数而已。

long是够的,但我不想求和,想讲讲很多数据的处理方式:
逐个数判断+位运算。

其实,(temp & 1) == 1就是判奇数的了,会快一些的。

还有就是设一个布尔值,表示是否为奇数。
怎么变化这个布尔值呢?

其实抽到偶数是不改变原先布尔值的(奇偶性),但抽到奇数就会使得原先奇数变成偶数,偶数变成奇数。
这一步的写法是:

if ((temp & 1) == 1) {
    isOdd = !isOdd;
}

妙不可言!

AC代码(Java语言描述)

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
        //非奇数==偶数
        boolean isOdd = false;
        for (int i = 0; i < num; i++) {
            int temp = scanner.nextInt();
            //奇数
            if ((temp & 1) == 1) {
                isOdd = !isOdd;
            }
        }
        scanner.close();
        if (isOdd) {
            System.out.println("Alice");
        } else {
            System.out.println("Bob");
        }
    }
}
发布了479 篇原创文章 · 获赞 972 · 访问量 14万+

猜你喜欢

转载自blog.csdn.net/weixin_43896318/article/details/104241331