PATA1078题解

xiaoxiao2021-02-28  54

判断质数注意Msize为1的情况;

// // main.cpp // PATA1078 // // Created by Phoenix on 2018/2/18. // Copyright © 2018年 Phoenix. All rights reserved. // #include <iostream> #include <cstdio> #include <cmath> const int maxn = 10010; int hashTable[maxn] = {0}; bool judge_prime(int x) { if(x == 1) return false; int flag = true; for(int i = 2; i <= sqrt(x); i++) { if(x % i == 0) flag = false; } if(flag) return true; else return false; } int main(int argc, const char * argv[]) { int m, n; scanf("%d %d", &m, &n); while(judge_prime(m) == false) m++; for(int i = 0; i < n; i++) { int a; scanf("%d", &a); int k = 1, b = a, l = m; while(hashTable[a % m] != 0 && k <= l) { a = k * k + b; k++; } if(k == l + 1) printf("-"); else{ hashTable[a % m] = 1; printf("%d", a % m); } if(i < n - 1) printf(" "); else printf("\n"); } return 0; }

3月6日三刷代码

#include <iostream> #include <cstdio> #include <cmath> #include <algorithm> const int maxn = 10030; int prime[maxn] = {false}; bool vis[maxn] = {false}; void findPrime() { for(int i = 2; i < maxn; i++) { bool flag = true; for(int j = 2; j <= sqrt(i); j++) { if(i % j == 0) flag = false; } if(flag == true) prime[i] = true; } } int main() { findPrime(); int size, n; scanf("%d %d", &size, &n); while(prime[size] == false) size++; int table[size]; for(int i = 0; i < n; i++) { int a; scanf("%d", &a); int j; for(j = 0; j < size; j++) { int pos = (a + j * j) % size; if(vis[pos] == false) { vis[pos] = true; printf("%d", pos); break; } } if(j == size) printf("-"); if(i < n - 1) printf(" "); else printf("\n"); } return 0; }
转载请注明原文地址: https://www.6miu.com/read-2625425.html

最新回复(0)