NOIP16提高组赛前训练20-day2 T2:种花 flower
题目描述:
OI太可怕了,我决定回家种田.
我在后院里开辟了一块圆形的花圃,准备种花.种花是一种艺术,通过一定技术手法,花材的排列组合会让花变得更加的赏心悦目,这就是花艺.
当然你知道,我在种田之前是OIer,所以我不懂花艺,只会排列组合.我把花圃从圆心向外画线,分成了N块扇形,分别编号为1,2,3…..N,再从村里的商店采购了M种花.然后我大胆的决定:花圃中的每块只种M种花中的一种,相邻的两块不能种同一种花.我反应比较慢,所以我请来了机房里手速最快的强袭黯灭勋章鱼人守卫来帮我,让他试一下每种排列,看看哪种最令人赏心悦目.
有一些人,他们的美丽就在身边,也许就在自己身上,像艺术家一样,他们的眼光独到特别,可就因为他们不是艺术家,他们不被人们认可,被称之为另类.简单真实的事情总可以绽放最鲜艳的花,我欣赏这样的人的心理,当然拒绝粗鲁地对待一切.
正想着,他居然告诉我已经尝试完了.这怎么可能?这可一共有…….多少种方案来着?
众所周知的是,我的智商很低.
我想知道种花的方案一共有几种.
输入格式:
仅一行,包含两个整数,分别为N和M.
输出格式:
仅一行,包含一个整数,表示方案数.这个数可能很大,你只需要输出这个数对1000000007取模的结果.
样例输入:
3 3
样例输出:
6
数据范围:
对于20%的数据,0
时间限制:
1S
空间限制:
128M
题目分析:
数据辣么大,显然是要推导式子的.
抽象出来就是个染色问题,设当前有n块,m种颜色去染.
设答案为 an ,那么对于第一块可以染m种颜色,其余2~n块只能染m-1种颜色,那么实际上就有 an=m(m−1)n−1 ,但是这当中计算了第一块与第n块同色的情况.而若将第一块和最后一块看成一块,实际上这些情况的个数就为 an−1 ,那么就有
an=m(m−1)n−1−an−