题意
有n个数,每次操作只可以将其中一个数减k,问最少需要多少次操作才能让所有数相等,若不可能,输出-1
思路
先找到最小的,然后把所有数减到和最小的相等,如果它们的差不能被k整除就不可能成功,否则答案就要加两数之差除以k,最后算下来就是答案
代码
#include <cstdio>
long long a[100001];
int main()
{
long long n,k,minn,f,ans;
scanf("%I64d%I64d",&n,&k);
minn=1000000001;
for(long long i=0;i<n;i++)
{
scanf("%I64d",&a[i]);
if(a[i]<minn)
minn=a[i];
}
ans=0;
f=0;
for(long long i=0;i<n;i++)
if((a[i]-minn)%k!=0)
{
f=1;
break;
}
else ans+=(a[i]-minn)/k;
if(f)
printf("-1\n");
else printf("%I64d\n",ans);
return 0;
}