QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#470489 | #6399. Classic: Classical Problem | UESTC_xxx# | WA | 1ms | 12076kb | C++20 | 2.0kb | 2024-07-10 14:13:44 | 2024-07-10 14:13:44 |
Judging History
answer
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<queue>
#include<cmath>
#include<stack>
#include<vector>
#include<map>
#define ll long long
#define lowbit(x) x&(-x)
using namespace std;
int tt,n,t[500005],g[500005];
ll p,a[500005],m,b[500005],x[500005],y[500005];
ll Pow(ll x,ll y){
ll z=1;
while(y){
if(y&1) z=(x*z)%p;
x=(x*x)%p;
y>>=1;
}
return z;
}
int main(){
scanf("%d",&tt);
while(tt--){
m=0;
scanf("%d%lld",&n,&p);
for(int i=0;i<=p;++i) t[i]=g[i]=0;
for(int i=1;i<=n;++i){
scanf("%lld",&a[i]);
x[i]=a[i];
a[i]=Pow(a[i],p-2);
t[a[i]]=g[a[i]]=1;
}
if(n==p){
printf("%d %d\n",n-1,n+1);
for(int i=1;i<=n-1;++i) printf("%d ",i);
printf("\n");
continue;
}
if(!t[0]){
printf("1 1\n0\n");
continue;
}
if(n==1){
printf("%lld 1\n",p);
for(int i=0;i<p;++i) printf("%d ",i);
continue;
}
int f=0;
for(ll i=2;i<min(1LL*301,p);++i){
int ff=0;
for(int j=1;j<=n;++j){
if(a[j]==0) continue;
if(t[(i*a[j])%p]==i-1) t[(i*a[j])%p]++,ff=1;
else t[(i*a[j])%p]=0;
}
if(!ff){
f=1;
int cnt=0;
for(int j=1;j<p;++j){
if(g[j]==i-1) cnt++;
}
printf("%d %lld\n",cnt,i);
for(int j=1;j<p;++j){
if(g[j]==i-1) printf("%d ",j);
}
printf("\n");
break;
}
for(int j=1;j<=n;++j){
g[(i*a[j])%p]=t[(i*a[j])%p];
}
}
if(f) continue;
for(int j=1;j<p;++j){
if(t[j]==300) m++,b[m]=j;
}
int ans=0,cnt=0;
for(int i=1;i<=m;++i){
for(int j=0;j<p;++j) t[j]=0;
for(int j=1;j<=n;++j){
t[b[i]*x[j]%p]++;
}
for(int j=0;j<=p;++j){
if(!t[j]){
ans=max(ans,j);
break;
}
}
}
for(int i=1;i<=m;++i){
for(int j=0;j<p;++j) t[j]=0;
for(int j=1;j<=n;++j){
t[b[i]*x[j]%p]++;
}
for(int j=0;j<=p;++j){
if(!t[j]){
if(j==ans) cnt++,y[cnt]=b[i];
break;
}
}
}
printf("%d %d\n",cnt,ans);
for(int i=1;i<=cnt;++i) printf("%lld ",y[i]);
printf("\n");
}
}
詳細信息
Test #1:
score: 100
Accepted
time: 0ms
memory: 12004kb
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: 1ms
memory: 12076kb
input:
3 1 2 0 1 2 1 2 2 1 0
output:
1 1 0 1 1 0 1 3 1
result:
wrong answer 1st lines differ - expected: '2 1', found: '1 1'