B3830题解
fish_shit
·
·
题解
对于这道题,我们先判断无解的情况
$2$:$c$ 序列中相邻的元素的差不能被 $x$ 整除。为了满足 $a_ix+y=c_i$,$c$ 序列中的所有元素一定是模 $x$ 的同余类。
除了无解的情况,我们只需输出 $c$ 序列中最小的元素减去 $x$ 就行了。
**注意:一定要开 long long!**
最后,附上代码:
```cpp
#include<bits/stdc++.h>
using namespace std;
long long c[100100];
int main(){
long long n,x;
cin>>n>>x;
long long minn=1e18+100;
for(int i=1;i<=n;i++){
cin>>c[i];
if(c[i]<=x){//第一种无解情况
cout<<"-1";
return 0;
}
if(i>=2){
if((c[i]-c[i-1])%x!=0){//第二种无解情况
cout<<"-1";
return 0;
}
}
if(c[i]<minn){//取最小值
minn=c[i];
}
}
cout<<minn-x;//输出
return 0;
}
```
望管理员大大通过!