3.4w+
社区成员
第一题,分数
这题其实可以从第二个开始看起
第二个向后加起来就是分母减一,然后再加一个1就行
下面代码纯粹看一下2的19次方多少
package month_training;
public class 分数 {
public static void main(String[] args) {
int ans = 1;
for(int i = 1 ; i<=19;i++) {
ans = ans*2;
}
System.out.print(2*ans-1);
}
}
第二题
回文日期,代码量大了点,模板
package month_training;
import java.util.Scanner;
public class 回文日期和诶比日期 {
static int[] w = {0,31,28,31,30,31,30,31,31,30,31,30,31};
static int y ,m,d;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int start = sc.nextInt();
d = start %100 + 1;
start /= 100;
m = start %100;
start /= 100;
y = start;
boolean a=false,b=false;
while(y != 9999 || m != 12 || d !=31) {
if(y%400 == 0 || (y%100 != 0 && y%4 == 0)) w[2] = 29;
else w[2] = 28;
if(check1(y,m,d)) {
if(!a) {
System.out.println(y*10000 + m*100 +d);
}
a = true;
if(check2(y,m,d)) {
System.out.println(y*10000 + m*100 +d);
b = true;
}
}
d++;
if(d>w[m]) {
d=1;
m++;
}
if(m>12) {
y++;
m = 1;
}
if(a&&b) {
break;
}
}
}
static boolean check1(int y ,int m ,int d) {
int tmp = y*10000 + m*100 +d;
char[] ori = String.valueOf(tmp).toCharArray();
int len = ori.length;
int l = 0;
int r = len-1;
while(r>l) {
if(ori[r] != ori[l]) {
return false;
}
r--;
l++;
}
return true;
}
static boolean check2(int y ,int m ,int d) {
int tmp = y*10000 + m*100 +d;
char[] ori = String.valueOf(tmp).toCharArray();
int len = ori.length;
int r = 0;
int l = len-1;
if(ori[r] == ori[r+2] && ori[r+1] == ori[r+3]&&ori[l]==ori[l-2] &&ori[l-1]==ori[l-3]) {
return true;
}
else return false;
}
}
第三题 迷宫
这题今天早上不知道为啥就想写dfs,结果,不出意外,hhhh
错误代码就不放了
第四题 数列
看了一下csdn上的题解,涉及到biginteger和一堆数学推导
emmm,今天不是很想看
水一天,水一天,放个小假期
最近都没怎么睡得好