我的java代码:(样例idea上一摸一样,但csp的系统判0)
import java.util.Scanner;
public class Main{
public static void main(String[] args){
int n,d;
Scanner sc= new Scanner(System.in);
n=sc.nextInt();
d=sc.nextInt();
// 记录结果的数值
long target=0;
int[][] q =new int[n+2][d+2];
int[][] k =new int[n+2][d+2];
int[][] v =new int[n+2][d+2];
int[] w = new int[n+1];
// 输入Q,K,V
for (int i = 1; i <= n; i++) {
for(int j=1;j<=d;j++){
q[i][j]=sc.nextInt();
}
}
for (int i = 1; i <= n; i++) {
for(int j=1;j<=d;j++){
k[i][j]=sc.nextInt();
}
}
for (int i = 1; i <= n; i++) {
for(int j=1;j<=d;j++){
v[i][j]=sc.nextInt();
}
}
for(int i=1;i<=n;i++){
w[i]=sc.nextInt();
}
// 先让W和Q进行点乘
for(int i=1;i<=n;i++){
for(int j=1;j<=d;j++){
q[i][j]*=w[i];
}
}
long[][] arr1 = new long[d+2][d+2];
// K和V叉乘
for(int i=1;i<=d;i++){
for(int j=1;j<=d;j++){
for(int x=1;x<=n;x++){
arr1[i][j]+=k[x][i]*v[x][j];
}
}
}
// (k X V) X Q
long[][] arr2 = new long[n+2][d+2];
for(int i=1;i<=n;i++){
for(int j=1;j<=d;j++){
for(int x=1;x<=n;x++){
arr2[i][j]+=q[i][x]*arr1[x][j];
}
System.out.print(arr2[i][j]+" ");
}
System.out.println();
}
}
}
结果: