欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

牛客14718 开心的涂刷

发布时间:2024/7/19 33 豆豆
生活随笔 收集整理的这篇文章主要介绍了 牛客14718 开心的涂刷 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

链接:https://ac.nowcoder.com/acm/problem/14718
来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld

题目描述

一天小明同学拿着m种颜色的油漆去涂刷n块格子,在涂刷的过程中他发现有很多种涂色方案,并很快的算出了答案,然后他发现如果涂好颜色的格子中只要存在某两个相邻的格子颜色一样,他就会感到开心,他想知道有多少种让他开心的涂刷方案。

输入描述:

输入仅包含一行,包含两个数n,m分别表示格子数和颜色数。(1 <= n <= 1e12, 1 <= m <= 1e12)

输出描述:

输出一行包含一个整数,让小明开心的涂刷方案数。 答案对1000000007取模


一共有 mn个中所有的方案,我们只需要减去任意两个相邻的都不相同的即可,
考虑第一位,可以染色的可能有m种,如果第一位染了m种其中一种颜色,
那么第二位,只有m-1个选择,同理第三位,还是有m-1个选择,
因为第一位的颜色还可以选,所以所有的可能应该为:mn−m∗(m−1)n−1,直接快速幂即可

""" 一共有 mn个中所有的方案,我们只需要减去任意两个相邻的都不相同的即可,考虑第一位,可以染色的可能有m种,如果第一位染了m种其中一种颜色,那么第二位,只有m-1个选择,同理第三位,还是有m-1个选择,因为第一位的颜色还可以选,所以所有的可能应该为:mn−m∗(m−1)n−1,直接快速幂即可 """ n, m = list(map(int, input().split()))MODULE = 1000000007 ans = pow(m, n, MODULE) - m * pow(m - 1, n - 1, MODULE) print(ans % MODULE)

总结

以上是生活随笔为你收集整理的牛客14718 开心的涂刷的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。