#include<bits/stdc++.h>
using namespace std;
struct Node
{
int data;
Node *p;
};
int main()
{
int n,m,t,s,a[105],b[105];
Node c[105],*current,*head;
double ans1=0,ans2=0;
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++) scanf("%d",&a[i]);
for(int i=0;i<m;i++) b[i]=-1,c[i].data=-1,c[i].p=NULL;
for(int i=0;i<n;i++)
{
t=a[i]%m;
s=1;
if(b[t]==-1) b[t]=a[i];
else
{
while(b[t]!=-1)
{
if(t!=m-1) t++;
else t=0;
s++;
}
b[t]=a[i];
}
ans1+=s;
}
for(int i=0;i<n;i++)
{
t=a[i]%m;
s=1;
if(c[t].data==-1) c[t].data=a[i];
else
{
head=c+t;
while(head->p!=NULL) head=head->p,s++;
current=NULL;
current=(Node *)malloc(sizeof(Node));
current->data=a[i];
current->p=NULL;
head->p=current;
s++;
}
ans2+=s;
}
printf("%.2lf\n%.2lf",ans1/n,ans2/n);
return 0;
}
【QBKbupt】第九章 查找 C. 查找练习3
最新推荐文章于 2024-07-24 08:30:00 发布