思路:欧拉函数模板题。。不过我这代码预处理都1s多,结果交上去后。。
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn = 1000200;
int t, n, phi[maxn],mp[maxn];
void euler() {
for(int i = 2; i < maxn; i++) {
if(!phi[i])
for(int j = i; j < maxn; j += i) {
if(!phi[j])
phi[j] = j;
phi[j] = phi[j] / i * (i - 1);
}
}
}
int main() {
cin >> t;
euler();
int k = 1;
for(int i = 1; i < 1000010; i++) {
for(int j = phi[i]; j >= 0 && mp[j] == 0; j--)
mp[j] = i;
}
while(t--) {
cin >> n;
ll ans = 0;
for(int a, i = 0; i < n; i++) {
cin >> a;
ans += mp[a];
}
cout << "Case " << k++ << ": " << ans << " Xukha" << endl;
}
return 0;
}