蓝桥杯(3.10)
1219. 移动距离
import java.util.Scanner;
public class Main{public static void main(String[] args) {Scanner sc = new Scanner(System.in);int w = sc.nextInt();int m = sc.nextInt();int n = sc.nextInt();m--;n--;//由从1开始变为从0开始//求行号int x1 = m/w, x2 = n/w;//求列号int y1 = m%w, y2 = n%w;if(x1%2 != 0) y1 = w-y1-1;if(x2%2 != 0) y2 = w-y2-1;System.out.println(Math.abs(x1-x2)+Math.abs(y1-y2));//曼哈顿距离}
}
1229. 日期问题
import java.util.Scanner;public class Main{static int[] days = new int[]{0,31,28,31,30,31,30,31,31,30,31,30,31};public static void main(String[] args) {Scanner sc = new Scanner(System.in);String[] s = sc.nextLine().split("/");for(int i=19600101;i<=20591231;i++) {int year = i/10000;int year2 = year%100;int month = i/100 %100;int day = i%100;int s1 = Integer.parseInt(s[0]);int s2 = Integer.parseInt(s[1]);int s3 = Integer.parseInt(s[2]);if((year%100!=0 && year%4 == 0)||(year%400 == 0))days[2] = 29;elsedays[2] = 28;//注意boolean f1 = false;boolean f2 = false;boolean f3 = false;//日月相等或者月日相等if(s1 == s2 && s2 == s3){//12/12/12f1 = true;}else if(s1 == s2){12/12/06f1 = true;f2 = true;}else if(s1 == s3){//12/06/12f1 = true;f3 = true;}else{//06/07/12f1 = true;f2 = true;f3 = true;}//没有s2 == s3 这种的样例//年月日if(f1){if(year2 == s1&&month == s2&&day == s3) {if((month>=1 && month<=12) && (day>=1 && day<=days[month]))System.out.printf("%d-%02d-%02d\n",year,month,day);}}//日月年if(f2){if(day == s1&&month == s2&&year2 == s3) {if((month>=1 && month<=12) && (day>=1 && day<=days[month]))System.out.printf("%d-%02d-%02d\n",year,month,day);} }//月日年if(f3){if(month == s1&&day == s2&&year2 == s3) {if((month>=1 && month<=12) && (day>=1 && day<=days[month]))System.out.printf("%d-%02d-%02d\n",year,month,day);} }}}
}
if合并
import java.util.Scanner;public class Main{static int[] days = new int[]{0,31,28,31,30,31,30,31,31,30,31,30,31};public static void main(String[] args) {Scanner sc = new Scanner(System.in);String[] s = sc.nextLine().split("/");for(int i=19600101;i<=20591231;i++) {int year = i/10000;int year2 = year%100;int month = i/100 %100;int day = i%100;int s1 = Integer.parseInt(s[0]);int s2 = Integer.parseInt(s[1]);int s3 = Integer.parseInt(s[2]);if((year%100!=0 && year%4 == 0)||(year%400 == 0))days[2] = 29;elsedays[2] = 28;//注意if(year2 == s1&&month == s2&&day == s3||day == s1&&month == s2&&year2 == s3||month == s1&&day == s2&&year2 == s3) {if((month>=1 && month<=12) && (day>=1 && day<=days[month]))System.out.printf("%d-%02d-%02d\n",year,month,day);}}}
}