NC214048. 最小互质数
描述
输入描述
第一行一个数,
接下来n行,每行一个数,分别代表。
输出描述
输出一行代表答案。
示例1
输入:
5 1 2 3 4 5
输出:
7
说明:
C(clang11) 解法, 执行用时: 15ms, 内存消耗: 688K, 提交时间: 2021-01-01 16:23:47
#include<stdio.h> main() { int n; int book[100006]={0}; int i; int j; scanf("%d",&n); for(i=0;i<n;i++) { int x; scanf("%d",&x); book[x]=1; } for(i=2;i<=100005;i++) { for(j=i;j<=100005;j+=i) book[i]|=book[j]; } for(i=2;i<=100005;i++) for(j=i;j<=100005;j+=i) book[j]|=book[i]; for(i=1;1;i++) if(book[i]==0){ printf("%d",i); break; } }
C++(clang++11) 解法, 执行用时: 99ms, 内存消耗: 5364K, 提交时间: 2020-12-31 21:32:18
#include<bits/stdc++.h> using namespace std; int n,i,a[100002],j; map<int,int>f; int main() { cin>>n; for(;i<n;i++) { cin>>a[i]; f[a[i]]=1; }for(i=1;;i++) { if(!f[i]) { for(j=0;j<n;j++) if(__gcd(a[j],i)!=1)goto A; cout<<i;return 0;A:; } } }
Python3(3.9) 解法, 执行用时: 235ms, 内存消耗: 7052K, 提交时间: 2020-12-31 22:59:26
n = int(input()) hash_set = set() for _ in range(n): hash_set.add(int(input())) import math i = 1 while True: if i in hash_set: i += 1 continue if all(math.gcd(num,i)==1 for num in hash_set): print(i) break i += 1
pypy3(pypy3.6.1) 解法, 执行用时: 240ms, 内存消耗: 28016K, 提交时间: 2021-01-01 00:36:34
import math n = int(input()) ss1 = set() for _ in range(n): ss1.add(int(input())) i = 1 while 1: if i in ss1: i += 1 continue elif all(math.gcd(x, i) == 1 for x in ss1): print(i) break i += 1