QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#658043 | #5301. Modulo Ruins the Legend | 666ldc | WA | 0ms | 3720kb | C++17 | 1.6kb | 2024-10-19 16:02:20 | 2024-10-19 16:02:23 |
Judging History
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;
}
Details
Tip: Click on the bar to expand more detailed information
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]