#1816. 珅泽教育CSP-J第一轮模拟考第九套 第 30 题

珅泽教育CSP-J第一轮模拟考第九套 第 30 题

第三题

#include<iostream>

int n, q;
char op[200000];
long long p[200000];
long long d[200000];
long long mod = 1000000007;

void solve1(long long a[])
{
    for (int i = 0; i < n; ++i)
        a[i] = 0;
    for (int i = 0; i < q; ++i) {
        if (op[i] == '+') {
            a[p[i]] += d[i];
            a[p[i]] %= mod;
        }
        else if (op[i] == '*') {
            for (int j = 0; j < n; ++j) {
                a[j] *= d[i];
                a[j] %= mod;
            }
        }
    }
}

void solve2(long long a[])
{
    for (int i = 0; i < n; ++i)
        a[i] = 0;

    long long f = 1;
    for (int i = q-1; i >= 0; i--) {
        if (op[i] == '+') {
            a[p[i]] += d[i] * f;
            a[p[i]] %= mod;
        }
        else if (op[i] == '*') {
            f *= d[i];
            f %= mod;
        }
    }
}

判断题

当全部 op[i] = + 时,solve2 数组 a 不等于 00( )。

{{ select(1) }}

  • 正确
  • 错误