#P5893. [IOI 2013] game 游戏
[IOI 2013] game 游戏
题目背景
警告:滥用本题评测将被封号。
题目描述
Bazza 和 Shazza 正在玩游戏。游戏在一个 行 列的网格上进行。其中, 行编号为 , 列编号为 。我们用 表示位于 行 列的单元格。每个单元格包含一个非负整数,游戏开始时所有单元格内的整数均为零。
游戏如下进行:任意时刻,Bazza 可以做如下动作之一:
- 修改一个单元格 内包含的整数值;
- 要求 Shazza 计算一个给定子矩阵中所有单元格内数字的最大公约数(GCD),子矩阵的两个对角分别为 和 (子矩阵包含给定的两个对角点)。
Bazza 会做 次动作(其中,修改单元格内数据 次,询问 GCD 次) 。
你的任务是对 Bazza 提出的问题给出正确答案。
输入格式
- 第1行: 表示网格行数, 表示网格列数, 表示操作总数。
- 接下来的 行: 每行表示一个动作,以动作发生的先后顺序给出。
表示每个动作的一行的格式如下:
update(P,Q,K)
表示为:1 P Q K
calculate(P,Q,U,V)
表示为:2 P Q U V
输出格式
共 行,对于每次询问,输出答案。
说明
update(P,Q,K)
- 当Bazza改变单元格中的整数时调用此函数,即把第 行第 列的数改为 。
- : 单元格的行号( )。
- : 单元格的列号( )。
- : 这个单元格中新的整数( )。这个新整数可能与原来的整数相同。
calculate(P,Q,U,V)
-
该函数计算以 和 为对角点的子矩阵中所有整数的最大公约数。这个范围是包含单元格 和 的。
-
如果这个子矩阵中的所有整数都是 ,那么该函数返回 。
-
: 子矩阵左上角单元格的行号( )。
-
: 子矩阵左上角单元格的列号 ( )。
-
: 子矩阵右下角单元格的行号( )。
-
: 子矩阵右下角单元格的列号( )。
提示
子任务
子任务 | 分数 | ||||
---|---|---|---|---|---|
限制
对于 的数据,,, 表示 Bazza 放到单元格中的数字。