牛客网:石子阵列

链接:https://www.nowcoder.com/acm/contest/157/A
来源:牛客网
 

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

题目描述

xb有m种石子,每种无限个,Ta想从这些石子中取出n个,并按顺序排列起来,为了好看,相邻的石子不能相同。xb想知道有多少种排列的方法。

输入描述:

第一行有两个正整数n,m。

输出描述:


 

第一行一个整数,表示在m种石子中取出n个的排列方案数模1000000007后的值

示例1

输入

复制

1 1

输出

复制

1

示例2

输入

复制

2 3

输出

复制

6

示例3

输入

复制

3 3

输出

复制

12

备注:

链接:https://www.nowcoder.com/acm/contest/157/A
来源:牛客网

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

题目描述

xb有m种石子,每种无限个,Ta想从这些石子中取出n个,并按顺序排列起来,为了好看,相邻的石子不能相同。xb想知道有多少种排列的方法。

输入描述:

第一行有两个正整数n,m。

输出描述:


 

第一行一个整数,表示在m种石子中取出n个的排列方案数模1000000007后的值

示例1

输入

复制

1 1

输出

复制

1

示例2

输入

复制

2 3

输出

复制

6

示例3

输入

复制

3 3

输出

复制

12

备注:

对于100%的测试数据:
1 ≤ n, m ≤ 1000
数据量较大,注意使用更快的输入输出方式。

在选石子的时候只要注意后一个和前一个不同就可以,因此每一个石子相对于前面一颗石子有m-1种可能,而第一个是不限种类的,所以有m种可能。

#include<stdio.h>
int main()
{
	long long m,n,ans;
	while(scanf("%lld%lld",&n,&m)!=EOF)
	{
		ans=m;
		n--;
		while(n--)
			ans=(ans*(m-1))%1000000007;
		printf("%lld
",ans);
	}	
	return 0;
} 
原文地址:https://www.cnblogs.com/zyq1758043090/p/10003019.html