QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#271115#5301. Modulo Ruins the LegendarahatoWA 0ms3684kbC++14836b2023-12-01 23:29:412023-12-01 23:29:42

Judging History

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

  • [2023-12-01 23:29:42]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:3684kb
  • [2023-12-01 23:29:41]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;

#define int long long

int n,m,s,a,b,x,y;

int gcd(int x,int y){
	return x?gcd(y%x,x):y;
}

int exgcd(int a,int b,int &x,int &y){
	if(!b) return x=1,y=0,a;
	int g;return g=exgcd(b,a%b,y,x),y-=a/b*x,g;
}

auto solve(int a,int b,int c){
	int x,y,g;
	g=exgcd(a,b,x,y);
	if(c%g) return pair<int,int>{-1,-1};
	x*=c/g;
	x=(x%b+b)%b;
	y=(c-a*x)/b;
	// cerr<<a<<" "<<b<<" "<<c<<" "<<x<<" "<<y<<endl;
	return pair<int,int>{x,y};
}

signed main(){
	ios::sync_with_stdio(0);
	cin>>n>>m;
	for(int i=1,x;i<=n;i++) cin>>x,s=(s+x)%m;
	int A=n,B=n*(n+1)/2;
	int g=gcd(A,B);
	for(int i=0;i<n;i++){
		pair<int,int> a=solve(g,m,i-s);
		if(a.first==-1) continue;
		pair<int,int> b=solve(A,B,(a.first+m*n)*g);
		cout<<i<<endl<<b.first<<" "<<b.second<<endl;
		break;
	}
}

详细

Test #1:

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

input:

6 24
1 1 4 5 1 4

output:

1
15 19

result:

ok ok

Test #2:

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

input:

7 29
1 9 1 9 8 1 0

output:

0
7 49

result:

wrong answer Integer parameter [name=d] equals to 49, violates the range [0, 28]