代码求调!
  • 板块题目总版
  • 楼主zhege122
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/9/28 11:23
  • 上次更新2024/9/28 11:58:07
查看原帖
代码求调!
1123449
zhege122楼主2024/9/28 11:23

题目描述

AC鸭收到一个玩具,他特别喜欢,因为这个玩具就像一个电子版的俄罗斯套娃,可以一步一步的打开,经过AC鸭的“破坏性”研究,他发现这个玩具的原理:这就是一个nnmm列的矩阵,多次询问,对一个子矩阵求ka[i][j]取余98244353∏k^a[i][j]取余98244353

即累乘,本题题意换句话说就是用子矩阵中的每个a[i][j]a[i][j]kk的幂,然后把这些幂都乘起来。

输入格式

第一行一个整数n,mn, m,表示矩阵的规模.

接下来nn行,每行mm个正整数。

接下来一个整数qq, 表示询问次数。

接下来qq行,每行先输入一个整数kk, 接下来44个整数xa,xb,ya,ybxa, xb, ya, yb, 表示询问的子矩阵的左上角和右下角。

输出格式

输出qq行,表示对每次询问的答案。

数据规模

1n,m10000;0a[i][j]1000;q1051≤n, m≤10000; 0≤a[i][j]≤1000; q≤10^5

输入数据 1

5 5
8 2 1 4 1
2 4 5 6 2
2 4 6 7 1
3 0 4 3 6
2 3 43 4 4
3
3 2 2 5 4
12 2 1 4 5
4 1 1 5 5

输出数据 1

92111904
60120458
34784127

我的10分代码

#include <bits/stdc++.h>

using namespace std;

const int MOD = 98244353;
const int MAXN = 1005;

int n, m;
int a[MAXN][MAXN];
int ret[MAXN][MAXN];

int pow_mod(int base, int exponent) {
    if (exponent == 0) {
    	return 1;
	}
    long long result = 1;
    long long x = base;
    while (exponent > 0) {
        if (exponent % 2 == 1) {
            result = (result * x) % MOD;
        }
        x = (x * x) % MOD;
        exponent /= 2;
    }
    return result;
}

int main() {
    scanf("%d %d", &n, &m);
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= m; j++) {
            scanf("%d", &a[i][j]);
            ret[i][j] = (a[i][j] + ret[i][j - 1]) % (MOD - 1);
        }
    }
    
    for (int j = 1; j <= m; j++) {
        for (int i = 1; i <= n; i++) {
            ret[i][j] = (ret[i][j] + ret[i - 1][j]) % (MOD - 1);
        }
    }

    int q;
    scanf("%d", &q);
    while (q--) {
        int k;
		int xa, ya;
		int xb, yb;
        scanf("%d%d%d%d%d", &k, &xa, &ya, &xb, &yb);
        int tot = ret[xb][yb];
        if (xa > 1) {
        	tot = (tot - ret[xa - 1][yb] + MOD - 1) % (MOD - 1);
		}
        if (ya > 1) {
        	tot = (tot - ret[xb][ya - 1] + MOD - 1) % (MOD - 1);
		} 
        if (xa > 1 && ya > 1) {
        	tot = (tot + ret[xa - 1][ya - 1]) % (MOD - 1);
		}
        printf("%d\n", pow_mod(k, tot));
    }
    
    return 0;
}

怎么调试才能ACAC

2024/9/28 11:23
加载中...