Divisiblity of Difference

题目传送门

思路

首先得知道个性质,即若 \(a \bmod b = c \bmod b\),那么 \((a-c) \bmod b =0\),因为余数在 \((a-c)\) 中被减掉了。

于是我们可以把所有余数相同的 \(a_i\) 丢进一个 vector 里,之后再看余数相同的 \(a_i\) 的数量有没有 \(\ge k\),有的话就输出前 \(k\) 个数,没有就输出 No。

代码

#include<bits/stdc++.h>
using namespace std;
int n,k,m,ans,id;
vector<int> y[100005];
int main(){
	ios::sync_with_stdio(false);
	cin.tie(),cout.tie();
	cin>>n>>k>>m;
	for(int x,i=1;i<=n;i++)
		cin>>x,y[x%m].push_back(x);
	for(int i=0;i<m;i++){
		if(y[i].size()>=k){
			cout<<"Yes"<<endl;
			for(int j=0;j<k;j++)
				cout<<y[i][j]<<" ";
			return 0;
		}
	}
	cout<<"No";
	return 0;
}
posted @ 2024-08-21 16:32  WuMin4  阅读(31)  评论(0)    收藏  举报