小M得到了n个互不相同的正整数ai,在这n个数中,某个数称为无倍数数当且仅当其他的数都不是它的倍数。请你帮小M找出这n个数中所有的无倍数数,并以升序输出。
# -*- coding: utf-8 -*-
def find(a):
flag = False
idx = A.index(a)
for i in range(idx + 1, len(A)):
if A[i] % a == 0:
flag = True
break
return flag
if __name__ == '__main__':
n = raw_input()
A = sorted(map(int, raw_input().split(' ')))
B = filter(lambda a: not find(a), A)
print ' '.join(str(b) for b in B) + ' '
就很奇怪的一个题目。。怎么都通过不了。
import java.util.*;
// Set记录, 枚举每个数的因数, 从Set移除
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int[] a = new int[n];
Set<Integer> set = new HashSet<>();
for (int i = 0; i < n; i++) {
a[i] = in.nextInt();
set.add(a[i]);
}
Arrays.sort(a); // 排序:从小到大
for (int x : a) {
for (int i = 2; i * i <= x; i++) { // 2开始, 剔除因数
if (x % i == 0 && (set.contains(i) || set.contains(x / i) ) ) {
set.remove(i);
set.remove(x / i);
}
}
}
set.remove(1); // 1肯定不是, 下面处理结果升序即可
List<Integer> res = new ArrayList<>(set);
Collections.sort(res);
StringBuilder sb = new StringBuilder();
for (int x : res) sb.append(x).append(' ');
System.out.println(sb.toString());
}
} #include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int n;
cin>>n;
long long int arr[100001];
for(int i=0;i<n;i++)
{
cin>>arr[i];
}
sort(arr,arr+n);
long long int a[100001];
a[0]=arr[n-1];
int count=1;
for(int i=n-2;i>=0;i--)
{
int flag=0;
for(int j=n-1;j>i;j--)
{
if(arr[j]%arr[i]==0)
{
flag=1;
break;
}
}
if(flag==0)
{
a[count]=arr[i];
count++;
}
}
for(int i=count-1;i>0;i--)
{
cout<<a[i]<<" ";
}
cout<<a[0]<<endl;
}
自行测试没问题
//没过,提示“请检查是否存在数组越界等非法访问情况”,哪位大佬帮忙解决一下
import java.util.List;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
public class wubeishushu { public static void main(String[] args) { Scanner input = new Scanner(System.in); int n = input.nextInt(); int[] arr = new int[n]; for(int i = 0; i < n; i++) arr[i] = input.nextInt(); Arrays.sort(arr);
List <Integer> list = new ArrayList<>();
if(n == 1)
System.out.println(arr[0]);
else {
for(int i = arr.length-2; i >= 0; i--) {
boolean flag = true;
for(int j = i+1; j < arr.length; j++) {
if(arr[j] % arr[i] == 0) {
flag = false;
break;
}
}
if(flag) {
list.add(arr[i]);
}
}
if(list.size() > 0) {
for(int k = list.size()-1; k >= 0; k--)
System.out.print(list.get(k) + " ");
}
System.out.println(arr[arr.length-1]);
} input.close(); }
}
//怎么都通过不了
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int count = Integer.parseInt(reader.readLine());
String[] str = reader.readLine().split(" ");
ArrayList<Integer> list = new ArrayList<>();
for (String s : str) {
list.add(Integer.parseInt(s));
}
Collections.sort(list);
for (int i = list.size() - 1; i >= 0; i--) {
int max = list.get(i);
for (int j = 0; j < list.size(); j++) {
if (i == j) {
break;
}
if (max % list.get(j) == 0) {
list.remove(j);
j--;
i--;
}
}
}
for (Integer integer : list) {
System.out.print(integer+" ");
}
}
}
import java.util.*;
public class Main { public static void main(String [] args){ Scanner in=new Scanner(System.in); int n=in.nextInt(); int Ai[]=new int[n]; for(int i=0;i<n;i++){ Ai[i]=in.nextInt(); } for(int i=0;i<n-1;i++){ for(int j=i+1;j<n;j++){ if(Ai[i]>Ai[j]) { int t=Ai[i]; Ai[i]=Ai[j]; Ai[j]=t; } } } for(int i=0;i<n;i++){ int count=0; for(int j=0;j<n;j++){ if(Ai[j]%Ai[i]!=0) { count++; } } if(count==n-1) System.out.print(Ai[i]+" "); } } }
n = input()
n = int(n)
num = []
ai = sorted(map(int,input().split()))
for i in range(n):
bo = True
if ai[i]!=0:
for j in range(i+1,n):
if ai[j]%ai[i]==0:
bo = False
break
if bo:
num.append(ai[i])
print(' '.join(map(str,num))+' ')
很奇怪的一道题,不知道咋回事就是过不了。。。