#include <cstdio>
#include <cmath>
bool isPrime(int n){
if(n <= 1) return false;
int sqr = (int)sqrt(1.0 * n);
for(int i = 2; i <= sqr; i++){
if(n % i == 0) return false;
}
return true;
}
bool HashTable[10010] = {false};
int main(){
int n, m;
scanf("%d%d", &n, &m);
if(!isPrime(n)){
for(int i = n; i < 20001; i++){
if(isPrime(i)){
n = i;
break;
}
}
}
for(int i = 0; i < m; i++){
int temp;
scanf("%d", &temp);
if(HashTable[temp % n]){
int step;
for(step = 1; step <n; step++){
if(!HashTable[(temp + step * step) % n]){
if(i != m - 1){
printf("%d ", (temp + step * step) % n);
HashTable[(temp + step * step) % n] = true;
break;
}
if(i == m - 1){
printf("%d", (temp + step * step) % n);
HashTable[(temp + step * step) % n] = true;
break;
}
}
}
if(step == n){
if(i != m - 1){
printf("- ");
}
if(i == m - 1){
printf("-");
}
}
}
if(!HashTable[temp % n]){
if(i != m - 1){
printf("%d ", temp % n);
HashTable[temp % n] = true;
}
if(i == m - 1){
printf("%d", temp % n);
HashTable[temp % n] = true;
}
}
}
return 0;
}
PAT a1078题解
最新推荐文章于 2020-06-03 23:41:20 发布