交叉排序
import java.math.BigInteger; import java.util.Arrays; import java.util.Comparator; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner cin = new Scanner(System.in); Integer a[]; Integer n = cin.nextInt(); a = new Integer[n + 5]; int l1 = cin.nextInt(); int r1 = cin.nextInt(); int l2 = cin.nextInt(); int r2 = cin.nextInt(); for(int i = 1;i <= n;i++) a[i] = cin.nextInt(); Arrays.sort(a, l1, r1 + 1); Arrays.sort(a, l2, r2 + 1, new Comparator<Integer>(){ @Override public int compare(Integer o1, Integer o2) { // TODO Auto-generated method return o2 - o1; } }); for(int i = 1;i <= n;i++) if(i == 1) System.out.print(a[i]); else System.out.print(" " + a[i]); System.out.println(); } }成绩排序
import java.math.BigInteger; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.Scanner; public class Main { static class node{ int c; int m; int e; int s; int sum; String name; node(String name,int c, int m, int e, int s){ this.name = name; this.c = c; this.m = m; this.e = e; this.s = s; this.sum = c + m + e + s; } } public static void main(String[] args) { Scanner cin = new Scanner(System.in); ArrayList<node>ar = new ArrayList<node>(); int n = cin.nextInt(); for(int i = 1;i <= n;i++) { String name = cin.next(); int c = cin.nextInt(); int m = cin.nextInt(); int e = cin.nextInt(); int s = cin.nextInt(); node nd = new node(name, c, m, e, s); ar.add(nd); } ar.sort(new Comparator<node>() { @Override public int compare(node o1, node o2) { // TODO Auto-generated method stub if(o1.c == o2.c)return o1.name.compareTo(o2.name); else return o2.c - o1.c; } }); int cnt = 0; for(node T:ar) { cnt++; if(cnt == 1) System.out.print(T.name); else System.out.print(" " + T.name); if(cnt == 4)break; } System.out.println(); ar.sort(new Comparator<node>() { @Override public int compare(node o1, node o2) { // TODO Auto-generated method stub if(o1.m == o2.m)return o1.name.compareTo(o2.name); else return o2.m - o1.m; } }); cnt = 0; for(node T:ar) { cnt++; if(cnt == 1) System.out.print(T.name); else System.out.print(" " + T.name); if(cnt == 4)break; } System.out.println(); ar.sort(new Comparator<node>() { @Override public int compare(node o1, node o2) { // TODO Auto-generated method stub if(o1.e == o2.e)return o1.name.compareTo(o2.name); else return o2.e - o1.e; } }); cnt = 0; for(node T:ar) { cnt++; if(cnt == 1) System.out.print(T.name); else System.out.print(" " + T.name); if(cnt == 4)break; } System.out.println(); ar.sort(new Comparator<node>() { @Override public int compare(node o1, node o2) { // TODO Auto-generated method stub if(o1.s == o2.s)return o1.name.compareTo(o2.name); else return o2.s - o1.s; } }); cnt = 0; for(node T:ar) { cnt++; if(cnt == 1) System.out.print(T.name); else System.out.print(" " + T.name); if(cnt == 4)break; } System.out.println(); ar.sort(new Comparator<node>() { @Override public int compare(node o1, node o2) { // TODO Auto-generated method stub if(o1.sum == o2.sum)return o1.name.compareTo(o2.name); else return o2.sum - o1.sum; } }); cnt = 0; for(node T:ar) { cnt++; if(cnt == 1) System.out.print(T.name); else System.out.print(" " + T.name); if(cnt == 4)break; } System.out.println(); } }链接 长度为11的等差素数列,其公差最小值是多少?
package ch01; public class isPrime { static int []prime = new int[100005]; static boolean []vis = new boolean[100005]; static int cnt = 0, count = 0; static void sieve(int n) { cnt = 0; for(int i = 2; i <= n; i++) { if(!vis[i]) //不是目前找到的素数的倍数 是素数 prime[cnt++] = i; //找到素数 for(int j = 0; j < cnt && i * prime[j] <= n; j++) { vis[i * prime[j]] = true; //找到的素数的倍数不访问 if(i % prime[j] == 0) break; //关键!!!! } } } public static void main(String[] args) { sieve(100000); for(int i = 1;i <= 1000;i++) { for(int j = 0;j < cnt;j++) { int sum = prime[j];int k = 1; while(true) { count++; if(sum > 100000 || vis[sum] || k == 11) {//不是素数break break; } sum += i; k++; } if(k == 11) { System.out.println(i); System.out.println(count); System.exit(0); } } } } }