QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#529337 | #6399. Classic: Classical Problem | solar_express# | WA | 1ms | 4008kb | C++20 | 2.3kb | 2024-08-24 12:12:58 | 2024-08-24 12:12:58 |
Judging History
answer
#include<bits/stdc++.h>
#define N 100005
using namespace std;
int T,n,p,a[N];
int id[N],invid[N];
int vis[N];
int gen(){
for(int i=2;i<p;++i){
for(int j=0;j<p;++j) vis[j]=0;
int val=1;
bool fl=0;
for(int j=1;j<p;++j){
if(vis[val]){
fl=1;
break;
}
vis[val]=1;
val=1ll*val*i%p;
}
if(fl==0) return i;
}
}
bitset<200000> b,ans,c;
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cin>>T;
while(T--){
cin>>n>>p;
int g=gen();
// cerr<<"g:"<<p<<" "<<g<<endl;
int val=1;
for(int i=1;i<=p-1;++i){
id[val]=i;
invid[i]=val;
val=1ll*val*g%p;
}
bool fl=0,fl2=0;
for(int i=1;i<=n;++i){
cin>>a[i];
if(a[i]==0) fl=1;
else fl2=1;
}
if(fl==0){
cout<<"1 1\n";
cout<<"0\n";
continue;
}
if(fl2==0){
cout<<p<<" 1\n";
for(int i=0;i<p;++i)
cout<<i<<" \n"[i==p-1];
continue;
}
b.reset();
for(int i=1;i<=n;++i) if(a[i]!=0) b.set((p-1)-id[a[i]]),b.set(2*(p-1)-id[a[i]]);
for(int i=1;i<p;++i) ans.set(i);
fl=0;
for(int i=1;i<p;++i){
c=(b>>((p-1)-id[i]))|(b>>(2*(p-1)-id[a[i]]));
if((c&ans).count()){
ans=c&ans;
}else{
// cout<<"ans ";
cout<<ans.count()<<" "<<i<<'\n';
vector<int> a;
a.clear();
for(int j=1;j<p;++j)
if(ans[j])
a.push_back(invid[p-1-j+1]);
sort(a.begin(),a.end());
for(auto val:a) cout<<val<<" ";
cout<<'\n';
fl=1;
break;
}
}
if(fl==0){
cout<<ans.count()<<" "<<p<<'\n';
vector<int> a;
a.clear();
for(int j=1;j<p;++j)
if(ans[j])
a.push_back(invid[p-1-j+1]);
sort(a.begin(),a.end());
for(auto val:a) cout<<val<<" ";
cout<<'\n';
}
}
return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 1ms
memory: 3820kb
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: 0
Accepted
time: 0ms
memory: 3784kb
input:
3 1 2 0 1 2 1 2 2 1 0
output:
2 1 0 1 1 1 0 1 2 1
result:
ok 6 lines
Test #3:
score: 0
Accepted
time: 1ms
memory: 3784kb
input:
7 1 3 0 1 3 1 2 3 1 0 1 3 2 2 3 2 0 2 3 1 2 3 3 0 1 2
output:
3 1 0 1 2 1 1 0 1 2 1 1 1 0 1 2 2 1 1 0 2 3 1 2
result:
ok 14 lines
Test #4:
score: -100
Wrong Answer
time: 1ms
memory: 4008kb
input:
31 1 5 0 1 5 1 2 5 1 0 1 5 2 2 5 0 2 2 5 2 1 3 5 1 0 2 1 5 3 2 5 0 3 2 5 1 3 3 5 0 1 3 2 5 3 2 3 5 0 2 3 3 5 2 1 3 4 5 2 0 1 3 1 5 4 2 5 4 0 2 5 1 4 3 5 1 4 0 2 5 2 4 3 5 2 4 0 3 5 4 2 1 4 5 1 0 4 2 2 5 4 3 3 5 0 4 3 3 5 3 1 4 4 5 1 4 3 0 3 5 4 3 2 4 5 2 4 0 3 4 5 2 1 4 3 5 5 1 3 0 2 4
output:
5 1 0 1 2 3 4 1 1 0 1 2 1 1 1 0 1 2 2 1 1 0 1 3 1 1 1 0 1 2 3 1 1 0 1 3 3 1 1 0 2 2 2 3 1 1 0 1 4 1 1 1 0 1 2 4 1 1 0 1 3 4 1 1 0 1 3 2 1 1 0 1 4 2 1 1 0 1 3 4 1 1 0 1 4 3 1 1 0 2 5 3 4 1 1 0 4 5 1 2 3 4
result:
wrong answer 10th lines differ - expected: '3', found: '2 '