QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#658043#5301. Modulo Ruins the Legend666ldcWA 0ms3720kbC++171.6kb2024-10-19 16:02:202024-10-19 16:02:23

Judging History

你现在查看的是最新测评结果

  • [2024-10-19 16:02:23]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:3720kb
  • [2024-10-19 16:02:20]
  • 提交

answer

#pragma GCC optimize(2)
#pragma GCC optimize(3, "Ofast", "inline")
#include <bits/stdc++.h>
using namespace std;
#define x first
#define y second
#define int long long
#define endl '\n'
using i128 = __int128;
using i64 = long long;
using f128 = long double;
using u64 = unsigned long long;
using pii = pair<int, int>;
const int INF = 0x3f3f3f3f, mod = 1e9 + 7;
const i64 inf = 2e18;
//-------------------------------------------

// 求x, y,使得ax + by = gcd(a, b)
int exgcd(int a, int b, int &x, int &y)
{
    if (!b)
    {
        x = 1;
        y = 0;
        return a; // 到达递归边界开始向上一层返回
    }
    int d = exgcd(b, a % b, x, y);
    int temp = y; // 推出这一层的x,y
    y = x - (a / b) * y;
    x = temp;
    return d;
}

// x = x0 + (b / __gcd (a,b)) * t;
// y = y0 - (a / __gcd (a,b)) * t;
// 若有解 c 应该是 gcd (a,b) 的倍数

void solve()
{
    int n, m;
    cin >> n >> m;
    int sum = 0;
    for (int i = 1, a; i <= n; i++)
    {
        cin >> a;
        sum += a;
    }
    int A = n, B = n * (n + 1) / 2;
    int g1 = __gcd(A, B), g2 = __gcd(g1, m);
    int ans = sum % g2;
    cout << ans << endl;
    int x, y, t, k;
    exgcd(g1, m, k, t);
    int kk = ((ans - sum) / g2);
    k *= kk, t *= kk;
    int C = ans - sum - t * m;
    exgcd(A, B, x, y);
    int kkk = (C / g1);
    x *= kkk, y *= kkk;
    cout << (x + m) % m << " " << (y + m) % m << endl;
}
signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    int T = 1;
    // cin >> T;
    for (int i = 1; i <= T; i++)
        solve();
    return 0;
}

詳細信息

Test #1:

score: 100
Accepted
time: 0ms
memory: 3576kb

input:

6 24
1 1 4 5 1 4

output:

1
15 19

result:

ok ok

Test #2:

score: 0
Accepted
time: 0ms
memory: 3672kb

input:

7 29
1 9 1 9 8 1 0

output:

0
0 0

result:

ok ok

Test #3:

score: 0
Accepted
time: 0ms
memory: 3600kb

input:

1 1
0

output:

0
0 0

result:

ok ok

Test #4:

score: 0
Accepted
time: 0ms
memory: 3604kb

input:

1 1000000000
963837005

output:

0
0 36162995

result:

ok ok

Test #5:

score: 0
Accepted
time: 0ms
memory: 3720kb

input:

2 1
0 0

output:

0
0 0

result:

ok ok

Test #6:

score: -100
Wrong Answer
time: 0ms
memory: 3664kb

input:

2 1000000000
948507269 461613424

output:

0
410120693 -410120693

result:

wrong answer Integer parameter [name=d] equals to -410120693, violates the range [0, 999999999]