In the 2020
grid below, four numbers along a diagonal line have been marked in red.
08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08
49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00
81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65
52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91
22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80
24 47 32 60 99 03 45 02 44 75 33 53 78 36 84 20 35 17 12 50
32 98 81 28 64 23 67 10 26 38 40 67 59 54 70 66 18 38 64 70
67 26 20 68 02 62 12 20 95 63 94 39 63 08 40 91 66 49 94 21
24 55 58 05 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72
21 36 23 09 75 00 76 44 20 45 35 14 00 61 33 97 34 31 33 95
78 17 53 28 22 75 31 67 15 94 03 80 04 62 16 14 09 53 56 92
16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57
86 56 00 48 35 71 89 07 05 44 44 37 44 60 21 58 51 54 17 58
19 80 81 68 05 94 47 69 28 73 92 13 86 52 17 77 04 89 55 40
04 52 08 83 97 35 99 16 07 97 57 32 16 26 26 79 33 27 98 66
88 36 68 87 57 62 20 72 03 46 33 67 46 55 12 32 63 93 53 69
04 42 16 73 38 25 39 11 24 94 72 18 08 46 29 32 40 62 76 36
20 69 36 41 72 30 23 88 34 62 99 69 82 67 59 85 74 04 36 16
20 73 35 29 78 31 90 01 74 31 49 71 48 86 81 16 23 57 05 54
01 70 54 71 83 51 54 69 16 92 33 48 61 43 52 01 89 19 67 48
The product of these numbers is 26 63
78
14
= 1788696.
What is the greatest product of four adjacent numbers in any direction (up, down, left, right, or diagonally) in the 2020
grid?
public class GridProduct {
public static void main(String args[]){
int [][] a={
{8,02,22,97,38,15,00,40,00,75,04,05,07,78,52,12,50,77,91,8},
{49,49,99,40,17,81,18,57,60,87,17,40,98,43,69,48,04,56,62,00},
{81,49,31,73,55,79,14,29,93,71,40,67,53,88,30,03,49,13,36,65},
{52,70,95,23,04,60,11,42,69,24,68,56,01,32,56,71,37,02,36,91},
{22,31,16,71,51,67,63,89,41,92,36,54,22,40,40,28,66,33,13,80},
{24,47,32,60,99,03,45,02,44,75,33,53,78,36,84,20,35,17,12,50},
{32,98,81,28,64,23,67,10,26,38,40,67,59,54,70,66,18,38,64,70},
{67,26,20,68,02,62,12,20,95,63,94,39,63,8,40,91,66,49,94,21},
{24,55,58,05,66,73,99,26,97,17,78,78,96,83,14,88,34,89,63,72},
{21,36,23,9,75,00,76,44,20,45,35,14,00,61,33,97,34,31,33,95},
{78,17,53,28,22,75,31,67,15,94,03,80,04,62,16,14,9,53,56,92},
{16,39,05,42,96,35,31,47,55,58,88,24,00,17,54,24,36,29,85,57},
{86,56,00,48,35,71,89,07,05,44,44,37,44,60,21,58,51,54,17,58},
{19,80,81,68,05,94,47,69,28,73,92,13,86,52,17,77,04,89,55,40},
{04,52,8,83,97,35,99,16,07,97,57,32,16,26,26,79,33,27,98,66},
{88,36,68,87,57,62,20,72,03,46,33,67,46,55,12,32,63,93,53,69},
{04,42,16,73,38,25,39,11,24,94,72,18,8,46,29,32,40,62,76,36},
{20,69,36,41,72,30,23,88,34,62,99,69,82,67,59,85,74,04,36,16},
{20,73,35,29,78,31,90,01,74,31,49,71,48,86,81,16,23,57,05,54},
{01,70,54,71,83,51,54,69,16,92,33,48,61,43,52,01,89,19,67,48},
};
int mul1=1,mul2=1,mul3=1,mul4=1;
//down
for(int i=0;i<20;i++){
for(int j=0;j<17;j++){
int pro1=a[i][j]*a[i][j+1]*a[i][j+2]*a[i][j+3];
if(mul1<pro1){
mul1=pro1;
}
}
}
//left
for(int i=0;i<17;i++){
for(int j=0;j<20;j++){
int pro2=a[i][j]*a[i+1][j]*a[i+2][j]*a[i+3][j];
if(mul2<pro2){
mul2=pro2;
}
}
}
//diagonally right
for(int i=0;i<17;i++){
for(int j=0;j<17;j++){
int pro3=a[i][j]*a[i+1][j+1]*a[i+2][j+2]*a[i+3][j+3];
if(mul3<pro3){
mul3=pro3;
}
}
}
//diagonally left
for(int i=19;i>=3;i--){
for(int j=0;j<17;j++){
int pro4=a[i][j]*a[i-1][j+1]*a[i-2][j+2]*a[i-3][j+3];
if(mul4<pro4){
mul4=pro4;
}
}
}
System.out.println("mul1="+mul1+",mul2="+mul2+",mul3="+mul3+",mul4="+mul4);
}
}
Answer:
| 70600674 |
import java.util.HashMap;
public class Recss {
static HashMap<Integer, String> horHashmap=new HashMap<Integer, String>();
public static int horizental(int [][] array){
int result=0;
for(int m=0;m<20;m++){
for(int n=0;n<17;n++){
int temp=array[m][n]*array[m][n+1]*array[m][n+2]*array[m][n+3];
if(temp>result){
horHashmap.put(temp,String.valueOf(array[m][n])+","+String.valueOf(array[m][n+1])+","+String.valueOf(array[m][n+2])+","+String.valueOf(array[m][n+3]));
result=temp;
}
}
}
return result;
}
static HashMap<Integer, String> verHashmap=new HashMap<Integer, String>();
public static int vertal(int [][] array){
int result=0;
for(int m=0;m<17;m++){
for(int n=0;n<20;n++){
int temp=array[m][n]*array[m+1][n]*array[m+2][n]*array[m+3][n];
if(temp>result){
verHashmap.put(temp,String.valueOf(array[m][n])+","+String.valueOf(array[m+1][n])+","+String.valueOf(array[m+2][n])+","+String.valueOf(array[m+3][n]));
result=temp;
}
}
}
return result;
}
static HashMap<Integer, String> xieHashmap=new HashMap<Integer, String>();
public static int xie(int [][] array){
int result=0;
for(int m=0;m<17;m++){
for(int n=0;n<17;n++){
int temp=array[m][n]*array[m+1][n+1]*array[m+2][n+2]*array[m+3][n+3];
if(temp>result){
xieHashmap.put(temp,String.valueOf(array[m][n])+","+String.valueOf(array[m+1][n+2])+","+String.valueOf(array[m+2][n+3])+","+String.valueOf(array[m+3][n+4]));
result=temp;
}
}
}
return result;
}
static HashMap<Integer, String> fanxiangHashmap=new HashMap<Integer, String>();
public static int fanxiang(int [][] array){
int result=0;
for(int m=19;m>2;m--){
for(int n=0;n<17;n++){
int temp=array[m][n]*array[m-1][n+1]*array[m-2][n+2]*array[m-3][n+3];
if(temp>result){
fanxiangHashmap.put(temp,String.valueOf(array[m][n])+","+String.valueOf(array[m-1][n+1])+","+String.valueOf(array[m-2][n+2])+","+String.valueOf(array[m-3][n+3]));
result=temp;
}
}
}
return result;
}
public static void main(String[] args) {
int [][] array={{8,02,22,97,38,15,00,40,00,75,04,05,07,78,52,12,50,77,91,8},
{49,49,99,40,17,81,18,57,60,87,17,40,98,43,69,48,04,56,62,00},
{81,49,31,73,55,79,14,29,93,71,40,67,53,88,30,03,49,13,36,65},
{52,70,95,23,04,60,11,42,69,24,68,56,01,32,56,71,37,02,36,91},
{22,31,16,71,51,67,63,89,41,92,36,54,22,40,40,28,66,33,13,80},
{24,47,32,60,99,03,45,02,44,75,33,53,78,36,84,20,35,17,12,50},
{32,98,81,28,64,23,67,10,26,38,40,67,59,54,70,66,18,38,64,70},
{67,26,20,68,02,62,12,20,95,63,94,39,63,8,40,91,66,49,94,21},
{24,55,58,05,66,73,99,26,97,17,78,78,96,83,14,88,34,89,63,72},
{21,36,23,9,75,00,76,44,20,45,35,14,00,61,33,97,34,31,33,95},
{78,17,53,28,22,75,31,67,15,94,03,80,04,62,16,14,9,53,56,92},
{16,39,05,42,96,35,31,47,55,58,88,24,00,17,54,24,36,29,85,57},
{86,56,00,48,35,71,89,07,05,44,44,37,44,60,21,58,51,54,17,58},
{19,80,81,68,05,94,47,69,28,73,92,13,86,52,17,77,04,89,55,40},
{04,52,8,83,97,35,99,16,07,97,57,32,16,26,26,79,33,27,98,66},
{88,36,68,87,57,62,20,72,03,46,33,67,46,55,12,32,63,93,53,69},
{04,42,16,73,38,25,39,11,24,94,72,18,8,46,29,32,40,62,76,36},
{20,69,36,41,72,30,23,88,34,62,99,69,82,67,59,85,74,04,36,16},
{20,73,35,29,78,31,90,01,74,31,49,71,48,86,81,16,23,57,05,54},
{01,70,54,71,83,51,54,69,16,92,33,48,61,43,52,01,89,19,67,48}};
Recss rec=new Recss();
System.out.println(horizental(array));
System.out.println(horHashmap.get(horizental(array)));
System.out.println(vertal(array));
System.out.println(verHashmap.get(vertal(array)));
System.out.println(xie(array));
System.out.println(xieHashmap.get(xie(array)));
System.out.println(fanxiang(array));
System.out.println(fanxiangHashmap.get(fanxiang(array)));
}
}