题意: 解法: 2x-y=x+(x-y), 将x和y看作数轴上的点,那么2x-y就是y关于x的对称点. 题目等价于给定点可以任意对称,判断k是否是其中的某个点. 容易发现最后点与点之间的间隙一定是相邻a(i)差值的gcd, 设这个gcd=g,那么就是判断x+tg=k是否存在, 枚举x=a[i],判断(k-a[i])%g=0是否成立即可. code: #include<bits/stdc++.h> #define int long long using namespace std; const int maxm=2e6+5; int a[maxm]; int n,k; void solve(){ cin>>n>>k; for(int i=1;i<=n;i++){ cin>>a[i]; } int g=0; for(int i=2;i<=n;i++){ g=__gcd(g,a[i]-a[i-1]); } for(int i=1;i<=n;i++){ if((k-a[i])%g==0){ cout<<"YES"<<endl; return ; } } cout<<"NO"<<endl; } signed main(){ ios::sync_with_stdio(0); int T;cin>>T; while(T--){ solve(); } return 0; }