QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#589428#5301. Modulo Ruins the LegendqmqcbhcWA 0ms3716kbC++141.7kb2024-09-25 17:50:342024-09-25 17:50:35

Judging History

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

  • [2024-09-25 17:50:35]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:3716kb
  • [2024-09-25 17:50:34]
  • 提交

answer

#include<iostream>
#include<set>
#include<map>
#include<vector>
#include<algorithm>
#include<bitset>
#include<math.h>
#include<string>
#include<string.h>
#include<stack>
#include<queue>
#include<time.h>
#include<random>
using namespace std;
typedef long long ll;
mt19937 rnd(time(0));
ll gcd(ll a, ll b) {
	if (b == 0) return a;
	else return gcd(b, a % b);
}
ll ksm(ll x, ll y)
{
	ll ans = 1;
	while (y)
	{
		if (y & 1)
			ans *= x;
		x *= x;
		y >>= 1;
	}
	return ans;
}
ll exgcd(ll a, ll b, ll& x, ll& y) {
	if (b == 0) {
		x = 1, y = 0;
		return a;
	}
	ll r = exgcd(b, a % b, x, y);
	ll t = x;
	x = y;
	y = t - a / b * y;
	return r;
}
void fio()
{
	ios::sync_with_stdio();
	cin.tie(0);
	cout.tie(0);
}	
ll a[250000];
int main()
{
	fio();
	ll t=1;
	while (t--)
	{
		ll n, m;
		ll sum = 0;
		cin >> n >> m;
		for (ll i = 1; i <= n; i++) {
			cin >> a[i];
			sum += a[i];
		}
		sum %= m;
		ll x, y;
		ll tmp = gcd(n, n * (n + 1) / 2);
		exgcd(n, n * (n + 1) / 2,x,y);
		ll x1 = x, y1 = y;
		//cout << x1 << " " << y1 << endl;
		ll tt = gcd(tmp, m);
		exgcd(tmp, m,x,y);
//		ll x2 = x, y2 = y;
//		ll t1 = sum / tt * tt;
//		ll t2 = (sum / tt + 1) * tt;
		
//		bool flag = 0;
		ll k=((m-sum+tt-1)/tt)%m;
		//cout << k << endl;
		cout << sum+k*tt-m << endl;
//		ll res = min(sum - t1, t2 - sum);
		//cout << res << endl;
		//x1 *= x2;
		x1 *= k;
		x1 %= m;
		//y1 *= x2;
		y1 *= k;
		y1 %= m;
//		if (flag) {
//			x1 *= -1;
//			y1 *= -1;
//		}
		if (x1 < 0) {
			ll tmp = (0 - x1) / m + 1;
			x1 += tmp * m;
			x1 %= m;
		}
		if (y1 < 0) {
			ll tmp = (0 - y1) / m + 1;
			y1 += tmp * m;
			y1 %= m;
		}
		
		cout << x1 << " " << y1 << endl;
	}
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

input:

6 24
1 1 4 5 1 4

output:

1
15 3

result:

ok ok

Test #2:

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

input:

7 29
1 9 1 9 8 1 0

output:

-29
0 0

result:

wrong answer Integer parameter [name=sum] equals to -29, violates the range [0, 28]