#17-20 WA,求帮助
查看原帖
#17-20 WA,求帮助
378418
Chenaknoip楼主2023/8/15 09:39

我想用暴力解 P5023 的,但有 4 组数据 WA 了

#include <bits/stdc++.h>
using namespace std;
#define int long long
int dp[8][100] = {
{2, 4, 8, 16, 32, 64, 128, 256, 0}, 
{4, 12, 36, 108, 324, 972, 2916, 8748, 0}, 
{8, 36, 112, 336, 1008, 3024, 9072, 27216, 0}, 
{16, 108, 336, 912, 2688, 8064, 24192, 72576, 0}, 
{32, 324, 1008, 2688, 7136, 21312, 63936, 191808, 0}, 
{64, 972, 3024, 8064, 21312, 56768, 170112, 510336, 0}, 
{128, 2916, 9072, 24192, 63936, 170112, 453504, 1360128, 0}, 
{256, 8748, 27216, 72576, 191808, 510336, 1360128, 3626752, 0}};
int n, m;
const int mod = 1e9 + 7;
int f(int a, int b) {
    long long t = 1, y = a;
    while (b) {
        if (b & 1) t = (t * y) % mod;
        y *= y;
        y %= mod;
        b >>= 1;
    }
    return (int)(t % mod);
}
signed main() {
    scanf("%d%d", &n, &m);
    if (m <= 8) {
        printf("%d\n", dp[n - 1][m - 1]);
    } else {
        if (n == 1) {
            printf("%d\n", f(2, m));
        } else {
            int ans = dp[n - 1][7];
            for (int i = 8; i <= m - 1; i++) {
                ans *= 3;
                ans %= mod;
            }
            printf("%d\n", ans);
        }
    }
    return 0;
}
2023/8/15 09:39
加载中...