第一题
1999年12月31日是星期五
请问:未来哪一个离我们最近的一个世纪末年(即xx99年)的12月31日正好是星期天(星期日)?
import java.util.Calendar;
/**
* @author: seh
* @date: 2020/12/25 16:24
* @version: 1.0
*/
public class _01世纪末的星期 {
public static void main(String[] args) {
Calendar calendar=Calendar.getInstance();
for (int year = 1999; year < 100000; year=year+100) {
calendar.set(Calendar.YEAR,year);
calendar.set(Calendar.MONTH,11);//从0开始(11就是12)
calendar.set(Calendar.DAY_OF_MONTH,31);
if(calendar.get(Calendar.DAY_OF_WEEK)==1){ //等于1就表示星期天,2就表示星期一..
System.out.println(year);
break;
}
}
}
}
结果:2299
第二题
标题: 振兴中华
小明参加了学校的趣味运动会,其中的一个项目是:跳格子。
地上画着一些格子,每个格子里写一个字,如下所示:
从我做起振
我做起振兴
做起振兴中
起振兴中华
比赛时,先站在左上角的写着“从”字的格子里,可以横向或纵向跳到相邻的格子里,但不能跳到对角的格子或其它位置。一直要跳到“华”字结束。
要求跳过的路线刚好构成“从我做起振兴中华”这句话。请你帮助小明算一算他一共有多少种可能的跳跃路线呢?
public class _02振兴中华 {
public static void main(String[] args) {
int count = f(0, 0);
System.out.println(count);
}
private static int f(int i, int j) {
if(i == 3 || j==4)return 1;
return f(i+1,j)+f(i,j+1);//将两种走法的路线数相加
}
}
第三题
梅森素数
计算 2^11213 - 1 的倒数100位
import java.math.BigInteger;
/**
* @author: seh
* @date: 2020/12/25 19:04
* @version: 1.0
*/
public class _03梅森素数 {
public static void main(String[] args) {
// 计算 2^11213 - 1 的倒数100位
BigInteger x = BigInteger.valueOf(2).pow(11213).subtract(BigInteger.ONE);
String s = x.toString();
int length = s.length();
String ans = s.substring(length - 100);//倒数100位
System.out.println(ans);
}
}
结果:
8586718527586602439602335283513944980064327030278104224144971883680541689784796267391476087696392191