http://acm.hdu.edu.cn/showproblem.php?pid=5651

题意:生成回文串。输出所有回文串的可能数。

题解:mod除法会损失高位,用逆元来代替除法,模板如下

ac代码:

#include<stdio.h>
#include<string.h>
#include<iostream>
#include<string> using namespace std;
const int maxn = ;
int num[maxn];
//char s[maxn];
typedef long long ll;
const int mod = 1e9 + ;
ll f[maxn];
void init() {
f[] = ; f[] = ;
for (int i = ; i < maxn; i++)
f[i] = f[i - ] * i%mod;
}
ll cal(ll x) {
ll res = ;
int k = mod - ;
while (k) {
if (k & ) {
res *= x;
res %= mod;
}
x*=x;
x %= mod;
k >>= ;
}
return res;//cal(x^ mod)
}
int main() {
int t;
init();
cin >> t;
while (t--) {
memset(num, , sizeof(num));
string s;
cin >> s;
int n = s.length(); for (int i = ; i < n; i++) {
num[s[i]]++; }
int cnt = ;
for (int i = 'a'; i <= 'z'; i++) {
if (num[i] & ) cnt++;
}
if (cnt > ) {
cout << << endl; continue;
}
int sum = ;
for (int i = 'a'; i <= 'z'; i++) {
num[i] /= ;
sum += num[i];
}
ll res = f[sum];
for (int i ='a'; i <='z'; i++)if(num[i]) {
res = res*cal(f[num[i]]) % mod;
}
cout << res<<endl; }
}

HDU - 5651 xiaoxin juju needs help 逆元模板的更多相关文章

  1. HDU 5651 xiaoxin juju needs help 逆元

    题目链接: hdu:http://acm.hdu.edu.cn/showproblem.php?pid=5651 bc:http://bestcoder.hdu.edu.cn/contests/con ...

  2. hdu 5651 xiaoxin juju needs help 逆元 两种求解方式

    xiaoxin juju needs help Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/ ...

  3. HDU 5651 xiaoxin juju needs help 数学

    xiaoxin juju needs help 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5651 Description As we all k ...

  4. HDU 5651 xiaoxin juju needs help (组合数)

    xiaoxin juju needs helpTime Limit: 1000MS Memory Limit: 65536KB 64bit IO Format: %I64d & %I64uSu ...

  5. HDU 5651 xiaoxin juju needs help

    组合数杨辉三角打表,这样避免了除法求逆元. #include<cstdio> #include<cstring> #include<cmath> #include& ...

  6. HDU 5651 xiaoxin juju needs help 水题一发

    分析:求一下组合数 首先,如果不止一个字符出现的次数为奇数,则结果为0. 否则,我们把每个字符出现次数除2,也就是考虑一半的情况. 那么结果就是这个可重复集合的排列数了. fact(n)/fact(a ...

  7. hdu5651 xiaoxin juju needs help(逆元)

    xiaoxin juju needs help  Accepts: 150  Submissions: 966  Time Limit: 2000/1000 MS (Java/Others)  Mem ...

  8. hdu5651 xiaoxin juju needs help (多重集的全排列+逆元)

    xiaoxin juju needs help 题意:给你一个字符串,求打乱字符后,有多少种回文串.                      (题于文末) 知识点: n个元素,其中a1,a2,··· ...

  9. HDU 5651 逆元

    xiaoxin juju needs help Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/ ...

随机推荐

  1. C#------Aspose的License文件

    Aspose官网: https://docs.aspose.com/display/cellsnet/Home 下载地址: http://vdisk.weibo.com/s/uoya0tRiZNf0X ...

  2. Ubuntu 14.04服务器安装及软件配置

    1.安装操作系统,配置root账号,通过sudo设置root的密码 如果使用ubuntu server 14.04,开启root需额外配置 1.开启root远程登录权限 sudo vi /etc/ss ...

  3. python中常用的知识

    python中一切事务皆为对象. 所以我们看字符串.数字.集合等全部使用类的方法查看某一个对象. a = 'sb,2b' 查看对象是什么类型:print(type(a)) 查看此对象有哪些属性:dir ...

  4. 【RF库XML测试】Get Elements

    Name:Get ElementsSource:XML <test library>Arguments:[ source | xpath ]Returns a list of elemen ...

  5. 使用 requests 访问 HTTPS

    当我们访问 HTTPS 的网站时,需要进行证书验证,在浏览器中可以自动处理验证问题,在 Python 中有以下两种做法: import requests //不进行证书验证,但这种方式会出现警告,如下 ...

  6. Linux下的/proc目录介绍

    proc被称为虚拟文件系统,它是一个控制中心,可以通过更改其中某些文件改变内核运行状态, 它也是内核提空给我们的查询中心,用户可以通过它查看系统硬件及当前运行的进程信息. Linux中许多工具的数据来 ...

  7. DrawCall 优化 .

    unity3D 对于移动平台的支持无可厚非,但是也有时候用Unity3D 开发出来的应用.游戏在移动终端上的运行有着明显的效率问题,比如卡.画质等各种问题.自己在做游戏开发的时候偶有所得.对于主要影响 ...

  8. ECMAScript 面向对象JS学习笔记1

    1.对象的 prototype 属性,可以把它看成创建新对象所依赖的原型.===在我理解,就是prototype下设置的字段是唯一性的,共享性的,不管创建多少个对象,所处空间都是不变的,没有增加也没有 ...

  9. 杨辉三角(Pascal Triangle)的几种C语言实现及其复杂度分析

    说明 本文给出杨辉三角的几种C语言实现,并简要分析典型方法的复杂度. 本文假定读者具备二项式定理.排列组合.求和等方面的数学知识. 一  基本概念 杨辉三角,又称贾宪三角.帕斯卡三角,是二项式系数在三 ...

  10. Adobe Acrobat Reader DC For Android 下载

    http://get.adobe.com/cn/reader/otherversions/ 点击“立即下载”按钮,即可开始下载到PC端