package guosai2020; import java.util.*; public class A { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt();//行 int m = in.nextInt();//列 int level[] = new int[n+1];//水平过道2 5 8 11 14 17 int vertical[] = new int[m+1];//垂直过道6 12 18 22 28 32 int prohibit[] = new int[n+1]; level[0] = 2; for(int i=1;i<=n;i++) {//水平过道行 level[i] = level[i-1]+3; } vertical[0] = 6; for(int i=1;i<=m;i++) {//垂直过道列 vertical[i] = vertical[i-1]+6; } prohibit[0] = 1; for(int i=1;i<=n;i++) {//朝南货柜行 prohibit[i] = prohibit[i-1]+3; } int cnt = 0; for(int i=1;i<=n;i++) { //是否是最后一个且朝南 if(i==n&&Arrays.binarySearch(prohibit,i)>=0) { continue; } //如果是水平过道就跳过下面的列数计算 if(Arrays.binarySearch(level,i)>=0) { continue; } for(int j=1;j<=m;j++) { //如果是不是垂直过道就计数 if(Arrays.binarySearch(vertical,j)<0) { cnt++; } } } System.out.println(cnt); } }
话不投机,立刻暴力解题!!!!
直接列3个表,有更好的解题思路可交流下;
样例可以过,其他的就没数据可测了