题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1021
这个题最坑的莫过于范围了,开始用long,测试了下,发现很快就超范围了。
然后想着使用大数,考虑到时间的限制,再次测试了结果,发现有规律。
规律自己看:
no
no
yes
no
no
no
yes
no
no
no
yes
no
no
no
yes
怎么样,够明显的了。然后就可以使用打表的方式来做,打表打的是boolean。
使用count 来计算第几个。
下面AC代码:
import java.util.Scanner;
public class Main{
private static Scanner scanner;
private static boolean boo[];
public static void main(String[] args) {
scanner = new Scanner(System.in);
dabiao();
while (scanner.hasNext()) {
int n = scanner.nextInt();
if (boo[n]) {
System.out.println("yes");
} else {
System.out.println("no");
}
}
}
public static void dabiao() {
boo = new boolean[1000000];
boo[0] = false;
boo[1] = false;
int count = 0;
for (int i = 2; i < boo.length; i++) {
if (count == 0) {
boo[i] = true;
} else {//else可以省略,默认是false
boo[i] = false;
}
count++;
if (count == 4) {
count = 0;
}
}
}
}