题意:n只狗,m只猴子,求相邻两只动物不相同的排序方法数
分析:若两只动物的数量差大于等于二,方法数为0;
相差为1时,为n!×m!
相差为0时,为2×n!×m!
代码如下:
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pre(i,x,n) for(int i=x;i<=n;i++)
#define mod 1000000007
int n,m;
ll s(int x)
{
ll ans=1,i=2;
while(i<=x)
{
ans=ans*i%mod;
i++;
}
return ans;
}
int main()
{
scanf("%d%d",&n,&m);
if(abs(n-m)>=2)
printf("0\n");
else if(abs(n-m)==1)
{
printf("%lld\n",s(n)*s(m)%mod);
}
else
printf("%lld\n",s(n)*s(m)*2%mod);
return 0;
}