hdu 4002 Find the maximum 欧拉函数 The 36th ACM/ICPC Asia Regional Dalian Site
这道题其实只要掌握欧拉函数的定义就可以做出来,只要想到了在Java的大数下就是水题;
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
static int maxn = 1001;
static boolean[] flag = new boolean[maxn];
static int[] p = new int[maxn];
static BigInteger[] ans = new BigInteger[maxn];
static int t = 1;
public static void make_map() {
for (int i = 0; i < maxn; i++)
flag[i] = true;
for (int i = 2; i < maxn; i++) {
if (flag[i] == true) {
p[t++] = i;
for (int j = 2; i * j < maxn; j++) {
flag[i * j] = false;
}
}
}
ans[0] = BigInteger.valueOf(1);
for (int i = 1; i < t; i++) {
ans[i] = ans[i - 1].multiply(BigInteger.valueOf(p[i]));
}
}
public static void main(String[] args) {
make_map();
Scanner in = new Scanner(System.in);
int time = in.nextInt();
while (time > 0) {
time--;
BigInteger n = in.nextBigInteger();
int i;
for (i = 1; i < t; i++) {
if (ans[i].compareTo(n) > 0) {
i--;
break;
}
if (ans[i].compareTo(n) == 0) {
break;
}
}
System.out.println(ans[i]);
}
}
}
浙公网安备 33010602011771号