QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#589507#5301. Modulo Ruins the Legendxjt05WA 0ms3616kbC++231.6kb2024-09-25 18:12:402024-09-25 18:12:40

Judging History

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

  • [2024-09-25 18:12:40]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:3616kb
  • [2024-09-25 18:12:40]
  • 提交

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;
	}
	int r = exgcd(b, a % b, x, y);
	int 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;
		ll tt = gcd(tmp, m);
		exgcd(tmp, m, x, y);
		ll x2 = x, y2 = y;
		ll kk = (m - sum + tt - 1) / tt;
		ll t1 = sum / tt * tt;
		ll t2 = (sum / tt + 1) * tt;
		ll k;
		bool flag = 0;
		if (sum - t1 < t2 - sum) {
			flag = 1;
			k = t1;
		}
		else k = t2;
		k /= tt;
		ll res = min(sum - t1, t2 - sum);
		cout << res << endl;
		k %= m;
		x1 %= m;
		x2 %= m;
		x1 = x1 * x2;
		x1 %= m;
		x1 *= k;
		x1 %= m;
		y1 *= x2;
		y1 %= m;
		y1 *= k;
		y1 %= m;
		cout << (x1%m+m)%m << " " << (y1%m+m)%m << endl;
	}
	return 0;
}

詳細信息

Test #1:

score: 0
Wrong Answer
time: 0ms
memory: 3616kb

input:

6 24
1 1 4 5 1 4

output:

1
9 5

result:

wrong answer Result not equal to solution.