编号 题目 状态 分数 总时间 内存 代码 / 答案文件 提交者 提交时间
#5695 #1058. 连加连乘 Accepted 100 164 ms 2008 K C++ 17 / 4.4 K s230026152 2024-08-17 14:26:53
显示原始代码
/**
 * @title: ..
 * @desc: ..
 * @tag: IO
 * @url:
 */

#include <bits/stdc++.h>

/*
 *
 *   宏定义模板常量:
 *
 *          使用STD
 *          重复数据读入
 *          int强制转ll
 *          重载工具函数
 *          启用debug输出
 *          关闭输入同步流
 *          使用文件输入流
 *          使用文件输出流
 *
 */

#define USE_STD

#define USE_LL

// #define REAP_READ
#define USE_TOOL

// #define USE_DEBUG
// #define USE_IOS
// #define IN_FILE "data.in"
// #define OUT_FILE "solve.out"

#ifdef USE_STD
using namespace std;
#endif

#ifdef USE_LL
#define int long long

#endif

// 辅助宏
#define rep(i, l, r) for (int i = (l); i < (r); i++)

#define _rep(i, l, r) for (int i = (l); i >= (r); i--)

#define all(x) (x).begin(), x.end()

#define endl '\n'  // 避免刷新缓冲区

#define inf32 0x3f3f3f3f

#define max32 INT_MAX


// 类型别名
using i64 = long long;
using ll = long long;
using u64 = unsigned long long;
using i128 = __int128;
using pii = std::pair<int, int>;

// 常规输出
template <typename T>
void print(const T &t) {
    std::cout << t << endl;
}
template <typename T, typename... Args>
void print(const T &t, const Args... args) {
    std::cout << t << ' ';
    print(args...);
}

// USE_DEBUG 模式下的输出
template <typename T>
void debug(const T &t) {
#ifdef USE_DEBUG
    std::cout << t << "\n\n";
#endif
}
template <typename T, typename... Args>
void debug(const T &t, const Args... args) {
#ifdef USE_DEBUG
    std::cout << t << ' ';
    debug(args...);
#endif
}

#ifdef USE_TOOL
i64 ceilDiv(i64 n, i64 m) {
    if (n >= 0) {
        return (n + m - 1) / m;
    } else {
        return n / m;
    }
}

i64 floorDiv(i64 n, i64 m) {
    if (n >= 0) {
        return n / m;
    } else {
        return (n - m + 1) / m;
    }
}

template <class T>
void chmax(T &a, T b) {
    if (a < b) {
        a = b;
    }
}

i128 gcd(i128 a, i128 b) { return b ? gcd(b, a % b) : a; }
#endif

// 快读快写
int read();
void write(int);

const int N = 5e5 + 5;
const int MOD = 1e9 + 7;

template <typename T>
struct Presum {
    vector<T> a;
    int n;
    Presum(int n_ = 0) { init(n_); }
    Presum(vector<T> &b) { presum(b); }
    void presum(vector<T> &b) {
        init(b.size() + 1);
        for (int i = 1; i < n; i++) {
            a[i] = a[i - 1] + b[i - 1];
        }
    }
    void init(int n_) {
        n = n_;
        a.assign(n, T{});
    }
    T sum() {
        for (int i = 1; i <= n; i++) {
            a[i] += a[i - 1];
        }
    }
    T get(int i) { return a[i]; }
    T getRange(int l, int r) { return a[r] - a[l - 1]; }
    void add(int i, const T &v) { a[i] += v; }
    void addRange(int l, int r, const T &v) {
        add(l, v);
        add(r + 1, -v);
    }
};

inline ll qpow(ll a, ll n, ll p) {
    ll ans = 1;
    while (n) {
        if (n & 1)
            ans = ans % p * a % p;
        a = a % p * a % p;
        n >>= 1;
    }
    return ans;
}

inline ll inv(ll a, ll p) { return qpow(a, p - 2, p); }

void solve() {
    int n = read();
    vector<int> a(n);
    vector<int> invv(n);
    int s = 1;
    rep(i, 0, n) {
        a[i] = read();
        s *= a[i] % MOD;
        s %= MOD;
    }
    rep(i, 0, n) { invv[i] = inv(a[i], MOD); }
    Presum<int> ps(a);
    rep(i, 0, n) {
        int x = ps.getRange(1, i) - ps.getRange(i + 2, n);
        int y = (s * (invv[i] % MOD)) % MOD;
        print(x, y);
    }
}

signed main() {
    int T = 1;
    debug("hello world");
#ifdef IN_FILE
    freopen(IN_FILE, "r", stdin);
#endif

#ifdef OUT_FILE
    freopen(OUT_FILE, "w", stdout);
#endif

#ifdef REAP_READ
    std::cin >> T;
#endif

#ifdef USE_IOS
    std::ios::sync_with_stdio(false);
    std::cin.tie(0);
    std::cout.tie(0);
#endif

    while (T--) {
        solve();
    }
    return 0;
}

inline int read() {
    int x = 0, f = 1;
    char ch = getchar();
    while (ch < '0' || ch > '9') {
        if (ch == '-')
            f = -1;
        ch = getchar();
    }
    while (ch >= '0' && ch <= '9') {
        x = x * 10 + ch - '0';
        ch = getchar();
    }
    return x * f;
}
inline void write(int x) {
    if (x < 0) {
        putchar('-');
        x = -x;
    }
    if (x > 9)
        write(x / 10);
    putchar(x % 10 + '0');
}
子任务 #1
Accepted
得分:100
测试点 #1
Accepted
得分:100
用时:3 ms
内存:280 KiB

输入文件(1.in

9
4575 6426 9445 8772 81 3447 629 3497 7202

答案文件(1.out

-39499 786611800
-28498 872821195
-12627 300026361
5590 488229479
14443 577147656
17971 342543942
22
<46 bytes omitted>

用户输出

-39499 786611800
-28498 872821195
-12627 300026361
5590 488229479
14443 577147656
17971 342543942
22047 889902963
26173 41199570
<18 bytes omitted>

系统信息

Exited with return code 0
测试点 #2
Accepted
得分:100
用时:3 ms
内存:384 KiB

输入文件(2.in

710
4325 3982 4784 8417 2156 1932 5902 5728 8537 3857 739 6918 9211 9679 8506 3340 6568 1868 16 7940
<3390 bytes omitted>

答案文件(2.out

-3620791 592199113
-3612484 292381003
-3603718 496292049
-3590517 690894759
-3579944 631846547
-3575
<12735 bytes omitted>

用户输出

-3620791 592199113
-3612484 292381003
-3603718 496292049
-3590517 690894759
-3579944 631846547
-3575856 371770782
-3568022 85161
<12707 bytes omitted>

系统信息

Exited with return code 0
测试点 #3
Accepted
得分:100
用时:3 ms
内存:384 KiB

输入文件(3.in

965
7801 8433 2359 1986 7193 7147 8119 2927 1528 5310 9747 9323 8294 6305 7798 9399 3654 1649 5020 7
<4615 bytes omitted>

答案文件(3.out

-4796301 676932003
-4780067 753201300
-4769275 373779790
-4764930 29076797
-4755751 578721889
-47414
<17414 bytes omitted>

用户输出

-4796301 676932003
-4780067 753201300
-4769275 373779790
-4764930 29076797
-4755751 578721889
-4741411 233069334
-4726145 553485
<17386 bytes omitted>

系统信息

Exited with return code 0
测试点 #4
Accepted
得分:100
用时:4 ms
内存:412 KiB

输入文件(4.in

1762
5583 2045 6032 8833 2940 8465 9065 6864 261 987 1243 2849 4856 435 2589 9271 1350 8418 4810 544
<8520 bytes omitted>

答案文件(4.out

-8787348 47387884
-8779720 830594898
-8771643 479536899
-8756778 671976293
-8745005 649172302
-87336
<32059 bytes omitted>

用户输出

-8787348 47387884
-8779720 830594898
-8771643 479536899
-8756778 671976293
-8745005 649172302
-8733600 71892092
-8716070 1835153
<32031 bytes omitted>

系统信息

Exited with return code 0
测试点 #5
Accepted
得分:100
用时:6 ms
内存:524 KiB

输入文件(5.in

5450
5437 1153 6197 9144 9833 7544 66 8057 2075 6243 3152 3701 3173 4149 3625 7703 1082 2162 3275 22
<26547 bytes omitted>

答案文件(5.out

-27333086 260657833
-27326496 915174879
-27319146 746521972
-27303805 487116870
-27284828 390236617

<103418 bytes omitted>

用户输出

-27333086 260657833
-27326496 915174879
-27319146 746521972
-27303805 487116870
-27284828 390236617
-27267451 580885029
-2725984
<103390 bytes omitted>

系统信息

Exited with return code 0
测试点 #6
Accepted
得分:100
用时:6 ms
内存:532 KiB

输入文件(6.in

5421
3772 6835 4474 9228 3228 1496 4478 7040 1076 1252 9610 9265 537 4770 5707 5975 4192 3669 898 97
<26443 bytes omitted>

答案文件(6.out

-27432130 226486028
-27421523 270125136
-27410214 490457154
-27396512 716331311
-27384056 40367191
-
<102799 bytes omitted>

用户输出

-27432130 226486028
-27421523 270125136
-27410214 490457154
-27396512 716331311
-27384056 40367191
-27379332 907958089
-27373358
<102771 bytes omitted>

系统信息

Exited with return code 0
测试点 #7
Accepted
得分:100
用时:41 ms
内存:2008 KiB

输入文件(7.in

68885
4562 2481 5891 482 2333 4220 1644 4852 3626 5922 3288 7781 754 8966 2925 2543 5890 2830 9184 7
<336766 bytes omitted>

答案文件(7.out

-344430252 138530325
-344423209 417966685
-344414837 637408821
-344408464 389990331
-344405649 34418
<1382331 bytes omitted>

用户输出

-344430252 138530325
-344423209 417966685
-344414837 637408821
-344408464 389990331
-344405649 344181459
-344399096 976771414
-3
<1382303 bytes omitted>

系统信息

Exited with return code 0
测试点 #8
Accepted
得分:100
用时:41 ms
内存:2008 KiB

输入文件(8.in

70577
5729 2787 8964 6447 2045 9183 977 7830 6799 3352 9180 5611 8431 2718 9145 5354 8744 759 3228 7
<344860 bytes omitted>

答案文件(8.out

-352506248 280420351
-352497732 314505987
-352485981 375895605
-352470570 287657545
-352462078 43497
<1417251 bytes omitted>

用户输出

-352506248 280420351
-352497732 314505987
-352485981 375895605
-352470570 287657545
-352462078 434977108
-352450850 938966377
-3
<1417223 bytes omitted>

系统信息

Exited with return code 0
测试点 #9
Accepted
得分:100
用时:18 ms
内存:1048 KiB

输入文件(9.in

28947
6440 9700 4510 9633 6834 4860 6068 1975 6979 2246 3831 5366 7309 7134 5795 7347 4101 8336 9046
<141434 bytes omitted>

答案文件(9.out

-144784436 259459821
-144768296 665043431
-144754086 213064577
-144739943 510424714
-144723476 59919
<567483 bytes omitted>

用户输出

-144784436 259459821
-144768296 665043431
-144754086 213064577
-144739943 510424714
-144723476 599198312
-144711782 566033180
-1
<567455 bytes omitted>

系统信息

Exited with return code 0
测试点 #10
Accepted
得分:100
用时:39 ms
内存:1872 KiB

输入文件(10.in

67510
4320 3497 9468 5703 386 1598 3617 4052 4306 1770 1756 1329 6295 7516 9759 8887 2538 263 1052 7
<330124 bytes omitted>

答案文件(10.out

-337437626 615911186
-337429809 412564002
-337416844 18666699
-337401673 386592376
-337395584 789472
<1354768 bytes omitted>

用户输出

-337437626 615911186
-337429809 412564002
-337416844 18666699
-337401673 386592376
-337395584 789472298
-337393600 422237991
-33
<1354740 bytes omitted>

系统信息

Exited with return code 0