知识点:

n个元素,其中a1,a2,····,an互不相同,进行全排列,可得n!个不同的排列。

若其中某一元素ai重复了ni次,全排列出来必有重复元素,其中真正不同的排列数应为 ,即其重复度为ni!

同理a1重复了n1次,a2重复了n2次,····,ak重复了nk次,n1+n2+····+nk=n。

对于这样的n个元素进行全排列,可得不同排列的个数实际上是 

由于题目要求是对100000007取余 同余定理中对于同一个除数,两个数的乘积与它们余数的乘积同余。但这里有除法所以得用上逆元

逆元

    • 定义: 
      满足a*k≡1 (mod p)的k值就是a关于p的乘法逆元。eg: 1=5*3-14 所以5关于模14的乘法逆元为3.

    • 应用: 
      当我们要求 (a/b) mod P 的值时,如果 a 很大,无法直接求得a/b的值时,我们就可以使用乘法逆元。我们可以通过求b关于P的乘法逆元k,将a乘上k再模P,即(a%P*k)。其结果与(a/b) mod P等价。

关于逆元的求解方法日后在做总结  这里用的是exgcd

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
typedef long long LL;
const LL MOD=1e9+;
int cnt[];
char ch[]; LL jiecheng(int n)
{
if(n==)
return ;
LL ans=;
for(int i=;i<=n;i++)
ans=ans*i%MOD;
return ans;
} LL x,y;
LL gcd(LL a,LL b)
{
LL t,d;
if(b==)
{
x=,y=;
return a;
}
d=gcd(b,a%b);
t=x, x=y, y=t-(a/b)*y;
return d;
} int main()
{
int t;
cin>>t;
while(t--)
{
memset(cnt,,sizeof(cnt));
scanf("%s",ch);
int len=strlen(ch);
for(int i=;i<len;i++)
{
cnt[ch[i]-' ']++;
}
int count=;
for(int i=;i<;i++)
{
if(cnt[i]&)
count++;
cnt[i]/=;
}
if(count>)
{
cout<<<<endl;
continue;
}
LL ans=jiecheng(len/)%MOD;
for(int i=;i<;i++)
{
if(cnt[i]>)
{
gcd(jiecheng(cnt[i]),MOD);
if(x<)
x+=MOD;// 求逆元
ans=ans*x%MOD;
}
}
cout<<ans<<endl;
}
}

最新文章

  1. ubuntu源笔记
  2. SQL Server基线算法(同比和环比)
  3. Android studio 提示:Can&#39;t use Subversion command line client: svn Probably the path to Subversion executable is wrong. Fix it.
  4. Windows下面如何建立多个Django虚拟环境
  5. Mongodb Manual阅读笔记:CH2 Mongodb CRUD 操作
  6. [Tomcat 源码分析系列] (附件) : setclasspath.bat 脚本
  7. 利用javascript和WebGL绘制地球 【翻译】
  8. 如何在eclipse中使用XYLayout布局?在此介绍如何把XYLayout导入到eclipse .
  9. javase tutorial
  10. Java NIO 选择器(Selector)的内部实现(poll epoll)
  11. H TML5 之 (1) 初识HTML5
  12. Unity3d HDR和Bloom效果(高动态范围图像和泛光)
  13. Applet: 用HTML调用Applet的几个注意事项
  14. UIView添加支持代码块的手势
  15. Python开发环境的搭建(win7)
  16. 【openstack N版】——可视化服务horizon
  17. axios在vue中的简单配置与使用
  18. 面试题(php部分)
  19. [整]swp文件的处理
  20. webpack模塊打包機

热门文章

  1. flask静态html
  2. 在windows系统搭建并运行一个Flutter项目
  3. other备忘
  4. ant-pro使用Form表单验证上传图片出现的问题
  5. js的深拷贝的理解和实现
  6. Python - 二叉树, 堆, headq 模块
  7. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_4-1.单机和分布式应用的登录检验讲解
  8. 小D课堂 - 新版本微服务springcloud+Docker教程_4-05 微服务调用方式之feign 实战 订单调用商品服务
  9. es6 实现单链表
  10. coreDNS域名无法解析问题