题解(史)
2024-02-15 22:41:38
发布于:广东
9阅读
0回复
0点赞
实际上就是要我们求ai % k的最大值
我们注意到k有五种可能,其中只有4是合数,加个特判就行
#include <iostream>
#include <cstdio>
using namespace std;
int a[100005];
int t, n, k;
int get4(){//
int ct = 0;
for(int i = 1; i <= n; i++){
if(a[i] % 2 == 0) ct++;
}if(ct >= 2) return 0;//超过的就代表已经达成返回0
else return 2 - ct;//否则只需要把其中两个奇数加1
}
int main(){
cin >> t;
while(t--){
cin >> n >> k;
int mx = 0;
bool flag = 0;
for(int i = 1; i <= n; i++){
cin >> a[i];
if(a[i] % k == 0 && !flag){
flag = 1;
cout << "0\n";//如果已经有数是k的倍数,直接输出0
}
mx = max(mx, a[i] % k);//否则记录下ai % k最大值
}if(!flag){
if(k == 4){
cout << min(get4(), k - mx) << endl;//特判
}
else cout << k - mx << endl;
}
}
return 0;
}
这里空空如也
有帮助,赞一个