/**
* 垒骰子
* @author dyp
*「输入格式」
*第一行两个整数 n m
*n表示骰子数目
*接下来 m 行,每行两个整数 a b ,表示 a 和 b 数字不能紧贴在一起。
*由于方案数可能过多,请输出模 10^9 + 7 的结果。
*
*/
//该类仅用于测试思路是否正确,许多地方都简写了
public class test10a {
static int n=2;//表示骰子的数量
static int[][] m= {//表示不能连接的方案,可以改成接收用户输入的,这里只举了一个不能的组合(1和2)
{1,2}
};
public static void main(String[] args) {
int num=2*m.length;//统计不可以的组合因为(1和2)也可以是(2和1)所有乘以2
for(int i=0;i<m.length;i++) {
if(m[i][0]==m[i][1]) {//对于两个数相同的组合只需要统计一次,如(3和3)交换后也是(3和3)
num--;
}
}
int a=(int)Math.pow(6, n);//总的连接方式,只统计了连接面
int b=n==1?0:(int)Math.pow(num,n-1);//不符合要求的连接方式
int c=(int)Math.pow(4, n);//每颗骰子的上面固定时可以旋转4次,
int sum=(a-b)*c;
System.out.println(sum);
}
}