版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

仓库源文站点原文


title: "题解 - [Luogu P5285] [十二省联考2019] 骗分过样例" categories:


题目链接

<!-- more -->

原始题面

题目背景

这是一道传统题

"我的程序需要完成什么功能呀? ......"

"我也不知道......"

"啊? 那我怎么写呀......"

"已经有人给你写好测试了, 只要你通过这些测试就可以了......"

"啊? ......"

"所有的测试数据都在题目目录下, 请做好备份, 避免误删!"

"这......"

"哦, 我还可以把输入格式告诉你......不过都有完整的数据了, 知道输入格式可能也没太大用处吧......"

题目描述

题目数据详见附加文件

输入输出格式

输入格式

第一行输入一个字符串, 表示需要运行的软件功能编号. 两个编号越相似, 说明对 应的两个功能的算法越接近

接下来根据功能的不同, 可能有任意长度的输入, 详见每个功能的文档

输出格式

详见每个功能的文档

输入输出样例

说明

子任务

" '每个功能的文档' 在哪里呀?"

"我也没有, 就像我没有题目描述一样......"

"好吧......那我是不是打表就可以了呀......"

"代码长度限制是 $\bold{102400}$ 字节 ($100$KB), 直接打肯定是不行的! 不过, 需要的话倒是可以稍微打一些小的表......"

"唔......"

"另外, 我们会给你的程序对于每个测试点分别评分, 求和后得到总分. 按照传统 的规矩, 每个测试点正确得满分, 错误得 $0$ 分. 每个测试点的分值不全相同, 测试点的分值, 顺序与难度没有必然联系 ."

测试点 功能编号 分值
$1$ $\texttt{1_998244353}$ $4$
$2$ $\texttt{1_998244353}$ $4$
$3$ $\texttt{1_998244353}$ $4$
$4$ $\texttt{1?}$ $7$
$5$ $\texttt{1?+}$ $9$
$6$ $\texttt{1wa_998244353}$ $6$
$7$ $\texttt{1wa_998244353}$ $7$
$8$ $\texttt{2p}$ $4$
$9$ $\texttt{2p}$ $6$
$10$ $\texttt{2p}$ $8$
$11$ $\texttt{2u}$ $5$
$12$ $\texttt{2u}$ $6$
$13$ $\texttt{2u}$ $9$
$14$ $\texttt{2g}$ $5$
$15$ $\texttt{2g}$ $7$
$16$ $\texttt{2g?}$ $9$

提示

在你使用 C/C++ 的 int 类型时, 如果发生了溢出, 比较可能的情况是按照模 $2^{32}$ 同余的前提下, 在 int 范围内取一个合理的值. 例如在计算 $2147483647 + 2$ 时, 较有可能会得到 -$2147483647$

然而, C/C++ 标准将这种情况归类为"未定义行为". 当你的程序试图计算会溢 出的 int 运算时, 除了上述结果外, 编译器还可能会让你的程序在此时计算出错误结果, 死循环, 运行错误等, 这也是符合 C/C++ 标准的

如果你的程序希望利用 int 的自然溢出的特性, 请转换为 unsigned 类型运算. 例如将 a + b 改写为 (int) ((unsigned) a + (unsigned) b), 以避免出现不预期的错误

附件

data.7z 4.16MB

解题思路

编号 功能
$\texttt{1_998244353}$ 求 $19^n\bmod p$, $p=998244353$
$\texttt{1?}$ 求 $19^n\bmod p$, $p=1145141$
$\texttt{1?+}$ 求 $19^n\bmod p$, $p=5211600617818708273$
$\texttt{1wa_998244353}$ 求 $19^n\bmod p$, $p=998244353$, 但是要写成 int 溢出的代码
$\texttt{2p}$ 对给定的区间求区间中所有的素数
$\texttt{2u}$ 对给定的区间求区间中所有的 Möbius 函数值
$\texttt{2g}$ 对给定的区间和模数求区间中所有的原根
$\texttt{2g?}$ 对给定的区间和模数求区间中所有的原根, ? 代表 $1515343657$

全是板子题, 就不细讲了

代码参考

<details open> <summary><font color='orange'>Show code</font></summary> {% icodeweb cpa_cpp title:Luogu_P5285 Luogu/P5285/0.cpp %} </details>