首先要认识Quadratic这个单词
其次要知道下面这张ppt 但是这张ppt里面的q的范围是有条件的 要满足4k+3的形式 第二个测试点的n为2 就会卡掉一分
这题搜了题解还调了100+min
真难
#include <bits/stdc++.h>
using namespace std;
const int N=1e5;
bool isPrime(int x)
{
if(x==2||x==3)return true;
if(x==1||x%2==0)return false;
int n=sqrt(x)+1;
for(int i=3;i<=n;i+=2)
{
if(x%i==0)
return false;
}
return true;
}
int minPrime(int x)
{
while(!isPrime(x))x++;
return x;
}
int a[N];
int main()
{
// freopen("in.txt","r",stdin);
int n,m,k,x,sum;
double ans;
cin>>n>>m>>k;
n=minPrime(n);
sum=0;
while(m--)
{
cin>>x;
int flag=0;
for(int i=0;i<n;i++)
{
if(a[(x+i*i)%n]==0)
{
a[(x+i*i)%n]=x;
flag=1;
break;
}
}
if(!flag)
{
cout<<x<<" cannot be inserted."<<endl;
}
}
for(int i=0;i<k;i++)
{
cin>>x;
int tt=1;
for(int i=0;i<n;i++)
{
if(a[(x+i*i)%n]==0||a[(x+i*i)%n]==x)
break;
tt++;
}
sum+=tt;
}
ans=sum*1.0/k;
cout<<fixed<<setprecision(1)<<ans<<endl;
return 0;
}