QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#474637 | #6399. Classic: Classical Problem | UESTC_Snow_Halation | WA | 0ms | 7844kb | C++14 | 2.2kb | 2024-07-12 21:20:03 | 2024-07-12 21:20:04 |
Judging History
answer
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
#define FOR() ll le=e[u].size();for(ll i=0;i<le;i++)
#define QWQ cout<<"QwQ\n";
#define ll long long
#include <vector>
#include <queue>
#include <map>
typedef long double db;
using namespace std;
const ll N=501010;
const ll qwq=303030;
const ll inf=0x3f3f3f3f3f;
const db eps = 1e-8;
inline ll read() {
ll sum = 0, ff = 1; char c = getchar();
while(c<'0' || c>'9') { if(c=='-') ff = -1; c = getchar(); }
while(c>='0'&&c<='9') { sum = sum * 10 + c - '0'; c = getchar(); }
return sum * ff;
}
ll T;
ll n,p;
ll vis[N];
ll a[N],d[N],num;
ll ans;
ll st[N],cnt;
ll ni[N] = {0,1};
void chushihua() {
cnt = num = ans = 0;
for(ll i=0;i<=p;i++) vis[i] = 0;
}
int main() {
T = read();
while(T--) {
chushihua();
n = read(); p = read();
for(ll i=2;i<p;i++) ni[i] = p - (p/i) * ni[p%i] %p;
for(ll i=1;i<=n;i++) vis[read()] = 1;
if(!vis[0]) { cout<<"1 1\n0\n"; continue; }
if(n==p) {
cout<<p-1<<" "<<p<<"\n";
for(ll i=1;i<p;i++) cout<<i<<" \n"[i==p-1];
continue;
}
ll sq = sqrt(p);
if(p-n<=sq) {
for(ll i=1;i<p;i++) if(!vis[i]) d[++num] = i;
for(ll c=1;c<p;c++) {
ll mi = inf;
for(ll i=1;i<=num;i++) mi = min(mi,d[i]*c%p);
if(mi>ans) {
ans = mi;
st[cnt=1] = c;
}
else if(mi==ans) {
st[++cnt] = c;
}
}
}
else {
for(ll c=1;c<p;c++) {
ll res = 0;
for(ll i=1;i<p;i++) {
if(!vis[i*ni[c]%p]) { res = i; break; }
}
if(res>ans) {
ans = res;
st[cnt=1] = c;
}
else if(res==ans) {
st[++cnt] = c;
}
}
}
cout<<cnt<<" "<<ans<<"\n";
for(ll i=1;i<=cnt;i++) cout<<st[i]<<" \n"[i==cnt];
}
return 0;
}
/*
5
*/
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 7652kb
input:
3 2 3 0 2 3 5 2 3 4 3 5 0 2 3
output:
1 2 2 1 1 0 2 2 2 3
result:
ok 6 lines
Test #2:
score: -100
Wrong Answer
time: 0ms
memory: 7844kb
input:
3 1 2 0 1 2 1 2 2 1 0
output:
1 1 1 1 1 0 1 2 1
result:
wrong answer 1st lines differ - expected: '2 1', found: '1 1'