Codeforces 793A Oleg and shares 题解

来源:互联网 发布:橘子vr软件下载 编辑:程序博客网 时间:2024/06/06 18:29

题意

有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;}
0 0