PAT a1078题解

来源:互联网 发布:java伪代码怎么写 编辑:程序博客网 时间:2024/05/20 05:57
#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;} 

原创粉丝点击