kotori和气球 (nowcoder.com)
题目描述,就是只要相邻的气球不相同即可,
解题思路
使用高中的排列组合:第一个位置 可以填n种情况 其次后推不可与前一个相同所以可以
填n -1中情况,结果相乘即可可以使用bigInteger实现 或者说 因为这个题特殊 可以在循环中取模,如果没有取模只能使用bigInteger了,或者这题就是范围计算机根本装不下无法书写
代码书写
BigInteger实现
public static void main1(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextInt()) { // 注意 while 处理多个 case
int n = in.nextInt();
int m = in.nextInt();
BigInteger n1 = new BigInteger(String.valueOf(n));
System.out.println( n1.multiply(n1.subtract(BigInteger.valueOf(1)).pow(m - 1)).mod(new BigInteger("109")));
}
}
循环取模实现
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextInt()) { // 注意 while 处理多个 case
int n = in.nextInt();
int m = in.nextInt();
int ret = n;
for (int i = 0; i < m - 1; i++) {
ret *= (n - 1) % 109;
}
System.out.println(ret);
}
}