B3830题解

· · 题解

对于这道题,我们先判断无解的情况

$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; } ``` 望管理员大大通过!