JU0rMQ 的题解


记住只在没有思路时使用题解,不要从它复制粘贴代码。请尊重题目和题解的作者。
在解题之前提交题解的代码会导致封禁。

作者: admin

概述

本题要求根据评测时的当前分钟数,输出 Project Euler 中对应题号的答案。核心解法是解码题目名称得到题号规则,选手只需在对应分钟数解出该题并提交。

分析
核心观察

题目名称 JU0rMQ 经 base64 解码后得到字符串 %M+1,其中 %M 是 strftime 的分钟格式符,因此题号为当前分钟数加一。正文内容为 Project Euler 的介绍,被掩盖的词是 Project Euler。

思路

设评测时的分钟数为 m,则题号 n = m + 1。题号范围在 1 到 60 之间(因为分钟数最大为 59)。实际比赛中,选手只需根据当前分钟数确定题号,然后独立求解该题号的 Project Euler 题目,并在该分钟提交答案。例如,若当前分钟为 0,则题号为 1,选手应解出 Project Euler 第 1 题并提交答案 233168;若分钟为 59,则题号为 60,选手应解出第 60 题并提交答案 26033。为了提供可直接运行的代码,本题解预存了第 1 至第 60 题的答案,程序根据当前分钟数查询并输出对应答案。

具体示例

若评测时分钟为 0,则题号 = 0 + 1 = 1,输出 Project Euler 第 1 题答案 233168。若分钟为 59,则题号 = 59 + 1 = 60,输出第 60 题答案 26033。

算法步骤
  1. 获取当前时间的分钟数 minute。
  2. 计算题号 idx = minute + 1。
  3. 从预存答案数组中取出 answers[idx]。
  4. 输出 answers[idx]。

(若选手实际解题,则步骤为:1. 获取当前分钟数,确定题号;2. 解出该题号的 Project Euler 题目;3. 在对应分钟提交答案。)

复杂度分析

时间:O(1) 空间:O(1)

实现注意事项
  • 分钟数范围 0 到 59,题号范围 1 到 60,需确保答案数组覆盖所有可能题号。
  • 实际比赛中,选手只需解出当前分钟对应的那一题,不必预存所有答案;预存所有答案是为了提供可直接提交的代码。
  • 答案数组直接使用推导出的常量,不在代码中重新计算。
  • 输出为单个整数,无多余空格或换行。
  • 本题无输入,直接输出答案。
源代码
#include <bits/stdc++.h>
using namespace std;

int main() {
    time_t now = time(nullptr);
    tm *local = localtime(&now);
    int minute = local->tm_min;
    int idx = minute + 1;
    const long long answers[] = {
        0,
        233168, 4613732, 6857, 906609, 232792560,
        25164150, 104743, 23514624000, 31875000, 142913828922,
        70600674, 76576500, 5537376230, 837799, 137846528820,
        1366, 21124, 1074, 171, 648,
        31626, 871198282, 4179871, 2783915460, 4782,
        983, -59231, 669171001, 9183, 443839,
        73682, 45228, 100, 40730, 55,
        872187, 748317, 932718654, 840, 210,
        7652413, 162, 16695334890, 5482660, 1533776805,
        5777, 134043, 9110846700, 296962999629, 997651,
        121313, 142857, 4075, 376, 249,
        972, 153, 26241, 129448, 26033
    };
    cout << answers[idx] << endl;
    return 0;
}
import time

minute = time.localtime().tm_min
idx = minute + 1
answers = [
    0,
    233168, 4613732, 6857, 906609, 232792560,
    25164150, 104743, 23514624000, 31875000, 142913828922,
    70600674, 76576500, 5537376230, 837799, 137846528820,
    1366, 21124, 1074, 171, 648,
    31626, 871198282, 4179871, 2783915460, 4782,
    983, -59231, 669171001, 9183, 443839,
    73682, 45228, 100, 40730, 55,
    872187, 748317, 932718654, 840, 210,
    7652413, 162, 16695334890, 5482660, 1533776805,
    5777, 134043, 9110846700, 296962999629, 997651,
    121313, 142857, 4075, 376, 249,
    972, 153, 26241, 129448, 26033
]
print(answers[idx])

评论

目前没有评论。