北京信息科技大学第十一届程序设计竞赛(重现赛)B

B kotori和气球

题目链接:https://ac.nowcoder.com/acm/contest/940/B

题目描述

kotori最近迷上了摆气球的游戏。她一共有n种气球,每种气球有无数个。她要拿出若干个气球摆成一排。

但是,由于气球被施放了魔法,同样种类的气球如果相邻会发生爆炸,因此若两个相邻的气球种类相同被视为不合法的。

kotori想知道,摆成一排m个一共有多少种不同的方案?

由于该数可能过大,只需要输出其对109取模的结果。


输入描述:

输入仅有一行,为两个整数n和m(1≤n,m≤100)

输出描述:

输出一个整数,为方案数对109取模的结果。
示例1

输入

3 2

输出

6

说明

假设3种气球标记为1、2、3,那么共有以下6种方案:[1,2] [1,3] [2,1] [2,3] [3,1] [3,2]。

思路:

  第一个选择有n种可能,第二个选择有n-1种可能,第三个选择有n-1种可能,以后都是n-1种可能
故方案数为n*(n-1)*(n-1)*....



#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll maxn=109;
ll jie(ll n,ll m)
{
    ll result1=1;
    for(int i=0;i<m-1;i++)
    {
       result1*=(n-1);
        result1=result1%maxn;
 
    }
    return n*result1%maxn;
}
 
int main()
{
    ll n,m;
    while(cin>>n>>m)
    {
        cout<<jie(n,m)%maxn<<endl;
    }
    return 0;
}




猜你喜欢

转载自www.cnblogs.com/Vampire6/p/11131666.html