切题

切题

题目背景

题目描述

happydef正在切题。

每道题都是这样的:

已知函数\(f(x)=\cdots\)。

输入\(n\),\(m\),求

\[\sum_{i=1}^{n}\sum_{j=1}^{m}f(\gcd(i,j)) \bmod 998244353\]

现在happydef已经得到了\(f(x)\)的前\(\min(n,m)\)项,定义为\(a\)数组,她希望你能够帮她写一份代码,使得只要给出\(a\),就能解决这个问题。

输入格式

本题有多组数据。

由于本题的数据范围较大,测试点的\(a_i\)以及每组数据的值将在程序内生成。

第一行输入六个数\(n_0,m_0,n_1,m_1,T,\text{seed}\)。

你可以使用如下方式生成\(a\)数组:

定义函数
\[\operatorname{rand}()=((\text{lastret} \times 233+2333)\bmod 998244353)\]
其中\(\text{lastret}\)为上一次的返回值,初始值为\(\text{seed}\)。

\[a_i=(\operatorname{rand}() \times \operatorname{rand}()\bmod 998244353)+1\]

提示:必须恰好生成\(\min(n_1,m_1)\)项,否则后面数据会有误。

在生成\(a_i\)之后,每个数据点依次生成方法:
\[n=(\operatorname{rand}() \times \operatorname{rand}()\times \text{lastans} \bmod (n_1-n_0+1))+n_0\]
\[m=(\operatorname{rand}() \times \operatorname{rand}()\times \text{lastans}\bmod (m_1-m_0+1))+m_0\]
其中,\(lastans\)表示上次询问答案,初始值为\(1\)。
注意,此处不需要把seed归位。

输出格式

输出\(T\)行,每行一个整数, 表示答案。

输入输出样例

输入 #1

1 1 4 5 1 4

输出 #1

874978019

样例解释

如果操作正确,生成的数据应为

494960965
953256032
630594112
663796310

\(n,m\)依次为:
```
2 5

```

数据范围

本题采用捆绑测试。

对于每一个Subtask,只有通过其中所有的测试点后才能拿到该Subtask的分数。

Subtask 1:(20 points)\(9\times 10^2 \leq n_0\leq n_1\leq 10^3\),\(9\times 10^2 \leq m_0\leq m_1\leq 10^3\),时限\(100ms\)

Subtask 2:(20 points)\(9\times 10^4 \leq n_0\leq n_1\leq 10^5\),\(9\times 10^4 \leq m_0\leq m_1\leq 10^5\),时限\(100ms\)

Subtask 3:(20 points)\(9\times 10^5 \leq n_0\leq n_1\leq 10^6\),\(9\times 10^5 \leq m_0\leq m_1\leq 10^6\),时限\(100ms\)

Subtask 4:(40 points)\(9\times 10^6 \leq n_0\leq n_1\leq 10^7\),\(9\times 10^6 \leq m_0\leq m_1\leq 10^7\),时限\(400ms\)

对于\(100\%\)的数据,\(T\leq 10,\text{seed}\leq 998244353\)。


Idea:happydef Solution:happydef std:happydef Data:happydef

来自出题人的友好提醒:如果被卡常请剪枝&多交几次,评测机不稳定

请注意常数因子带来的程序效率上的影响。

信息

ID
1000
难度
(无)
分类
(无)
标签
(无)
递交数
10
已通过
1
通过率
10%
上传者