- 一、世纪末的星期
- 二、马虎的算式
标题: 世纪末的星期
未来哪一个离我们最近的一个世纪末年(即xx99年)的12月31日正好是星期天(即星期日)?
请回答该年份(只写这个4位整数,不要写12月31等多余信息)
【解析】:暴力、枚举
使用Calendar类构造日历,遍历找到12月为31的是星期天的那一年
Calendar calendar=Calendar.getInstance();
for(int i=1999;i<5000;i+=100) {
calendar.set(Calendar.YEAR,i); //设置年份
calendar.set(Calendar.MONTH,11); //设置月,0开始
calendar.set(Calendar.DAY_OF_MONTH,31); //设置日,1开始,DAY_OF_MONTH
if(calendar.get(Calendar.DAY_OF_WEEK)==1) { //判断这一天是不是星期天
System.out.println(calendar.get(Calendar.YEAR));
break;
}
}
二、马虎的算式
假设 a b c d e 代表1~9不同的5个数字(注意是各不相同的数字,且不含0)
能满足形如: ab * cde = adb * ce 这样的算式一共有多少种呢?
【解析】暴力、枚举
int cnt=0;
//枚举所有可能
//数字不相同(如果相同则跳过)
for (int n1 = 1; n1 < 10; n1++)
for (int n2 = 1; n2 < 10; n2++) {if (n2 == n1) continue; //也可以 if(b != a)则进行下一个循环
for (int n3 = 1; n3 < 10; n3++) {if(n3==n2||n3==n1) continue;
for (int n4 = 1; n4 < 10; n4++) {if(n4==n3||n4==n2||n4==n1) continue;
for (int n5 = 1; n5 < 10; n5++) {if(n5==n3||n5==n2||n5==n1 ||n5==n4) continue;
if((n1*10+n2)*(n3*100+n4*10+n5)==(n1*100+n4*10+n2)*(n3*10+n5))
cnt++;
}}}}
System.out.println(cnt);



