文章

【GESP】C++二级练习 luogu-B3677, [语言月赛202211] Fear

GESP二级练习,多层分支嵌套练习,难度★✮☆☆☆。

luogu-B3677 [语言月赛202211] Fear

题目要求

题目描述

在平行宇宙的第五人格,游戏内有一个隐藏的数值,叫做恐慌值

这个数值存在于求生者上,会随监管者追逐求生者的时间增长而变化。

具体的,在求生者未被监管者追逐前,求生者的初始量为 $y _ 0$。求生者被监管者追逐了 $t$ 秒。

第 $1$ 秒时,求生者的恐慌值初始量 $y _ 0$。接下来的每一秒,其恐慌值会被乘上它的初始量

特别的,如果 $t$ 为 $0$,那么求生者的恐慌值为 $1$。

如果对于恐慌值的计算方式有疑惑,可以查看样例解释 #1帮助理解。

你需要计算,在追逐 $t$ 秒后,求生者的恐慌值奇偶性以及正负性

输入格式

输入一行两个整数,使用空格隔开。

第一个整数为 $y _ 0$,代表初始量

第二个整数为 $t$,代表追逐时间。

输出格式

输出两行,每行为一个字符串,NOYES

第一行,如果恐慌值为负数,输出 YES,否则输出 NO

第二行,如果恐慌值为奇数,输出 YES,否则输出 NO

样例输入 #1

1
3 3

样例输出 #1

1
2
NO
YES

样例输入 #2

1
-2 1

样例输出 #2

1
2
YES
NO

样例输入 #3

1
0 1

样例输出 #3

1
2
NO
NO

提示

【样例 #1 解释】:

求生者的恐慌值和追逐秒数对应如下:

秒数恐慌值
$1$$3$
$2$$9$
$3$$27$

在 $3$ 秒追逐后,求生者恐慌值为 $27$,是正数、奇数。

【样例 #2 解释】:

在 $1$ 秒追逐结束后,求生者恐慌值为 $-2$,是负数、偶数。

【样例 #3 解释】:

请注意 $0$ 是偶数。

数据规模与约定

对于前 $10\%$ 的数据,$1 \leq y _ 0 \leq 100$,$t = 1$。
对于前 $20\%$ 的数据,$1 \leq y _ 0 \leq 100$,$1 \leq t \leq 3$。
对于前 $50\%$ 的数据,$0 \leq y _ 0 \leq 10 ^ 9$,$0 \leq t \leq 10 ^ 3$。
对于前 $80\%$ 的数据,$-10 ^ 9 \leq y _ 0 \leq 10 ^ 9$,$0 \leq t \leq 10 ^ 9$。
对于 $100\%$ 的数据,$-10 ^ {18} \leq y _ 0 \leq 10 ^ {18}$,$ 0 \leq t \leq 10 ^ {18}$。

数据保证 $y _ 0, t$ 不同时为 $0$。


题目分析

本题的关键是找到规律,而不是真正计算出每一步的恐慌值。如:

  • 乘数是偶数,则积一定是偶数,乘数是奇数,积就是奇数
  • 不论正负,只要是偶次幂,积就是正数
  • 负数的奇次幂是负数

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
using namespace std;
int main() {
    long long y, t; // 定义两个长整型变量y和t
    cin >> y >> t; // 从输入流中读取y和t的值
    if (t == 0) { // 如果t等于0
        cout << "NO" << endl; // 输出"NO"
        cout << "YES"; // 输出"YES"
    } else { // 否则
        if (t % 2 == 0) { // 如果t是偶数
            cout << "NO" << endl; // 输出"NO"
            if (y % 2 == 0) { // 如果y是偶数
                cout << "NO"; // 输出"NO"
            } else { // 否则
                cout << "YES"; // 输出"YES"
            }
        } else { // 如果t是奇数
            if (y < 0) { // 如果y是负数
                cout << "YES" << endl; // 输出"YES"
            } else { // 否则
                cout << "NO" << endl; // 输出"NO"
            }
            if (y % 2 == 0) { // 如果y是偶数
                cout << "NO"; // 输出"NO"
            } else { // 否则
                cout << "YES"; // 输出"YES"
            }
        }
    }
    return 0; // 返回0,表示程序执行成功
}

所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code

GESP各级别考纲要点、知识拓展和练习题目清单详见C++学习项目主页

luogu-”系列题目已加入洛谷Java、C++初学团队作业清单,可在线评测,团队名额有限,欢迎加入。

bcqm-”系列题目可在编程启蒙题库进行在线评测。

本文由作者按照 CC BY 4.0 进行授权