由题意k可取2、3、4、5 这四个值,其中2、3、5是素数,一个素数的倍数可以是任意一个数和他的倍数的乘积。

而4的倍数可以是任意一个数和他的倍数的乘积,也可以是两个2的倍数的乘积,要判断这两种情况那种最优。

k==4

1.数组中2的倍数大于等于两个,那么不用变动,输出0

2.数组中有四的倍数,输出0

3.数组中有一个2的倍数,那么其他数一定是奇数,把任意一个数加一变成偶数即可,输出1

4.数组中没有2的倍数,那么所有数都是奇数,需要把任意两个奇数变成偶数即可,输出2

#include<bits/stdc++.h>
using namespace std;
const int M=2e5+5;
int a[M];
int main(){
    int t; cin>>t;
    while(t--){
        int n,k; cin>>n>>k;
        int minn=20;
        int f=0;
        for(int i=1;i<=n;i++){
            cin>>a[i];
            if(a[i]%k==0){
                f=1;
            }
            minn=min(minn,k-(a[i]%k));
        }
        if(f) {
        	cout<<"0"<<endl;
        	continue;
		}
        if(k!=4){
            cout<<minn<<endl;
        }
        else{
        	int cnt=0;
            f=0;
            for(int i=1;i<=n;i++){
                if(a[i]%2==0){
                    cnt++;
                }
                if(a[i]==3||a[i]==7){
                    f=1;
                }
            }
            if(cnt==1) {
                cout<<"1"<<endl;
                continue;
            }
            if(cnt>=2){
            	cout<<"0"<<endl;
            	continue;
			} 
            if(f) {
            	cout<<"1"<<endl;
				continue;	
			}
            if(cnt==0&&!f) cout<<"2"<<endl;
        }
        
    }
    return 0;
}