本文主要是介绍每日一日 kotori和气球,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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 处理多个 caseint 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 处理多个 caseint 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);}}
这篇关于每日一日 kotori和气球的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!