分析:求一下组合数

首先,如果不止一个字符出现的次数为奇数,则结果为0。

否则,我们把每个字符出现次数除2,也就是考虑一半的情况。

那么结果就是这个可重复集合的排列数了。 fact(n)/fact(a_1)/fact(a_2)/..../fact(a_n)fact(n)/fact(a​1​​)/fact(a​2​​)/..../fact(a​n​​)。

#include<cstdio>
#include<cstring>
#include<queue>
#include<cstdlib>
#include<algorithm>
#include<vector>
#include<cmath>
using namespace std;
typedef long long LL;
const int N=1e3+;
const int INF=0x3f3f3f3f;
const LL mod=1e9+;
LL c[N>>][N>>];
void init(){
for(int i=;i<=;++i)c[i][]=;
for(int i=;i<=;++i)
for(int j=;j<=;++j)
c[i][j]=(c[i-][j-]+c[i-][j])%mod;
}
char s[N];
int a[];
int main(){
init();
int T;
scanf("%d",&T);
while(T--){
scanf("%s",s+);
int l=strlen(s+);
for(int i=;i<;++i)a[i]=;
for(int i=;i<=l;++i)
a[s[i]-'a']++;
int cnt=,x;
for(int i=;i<;++i)
if(a[i]%)++cnt,x=i;
if(cnt){
if(l%){
if(cnt>){
printf("0\n");
continue;
}
else --a[x];
}
else{
printf("0\n");
continue;
}
}
else{
if(l%){
printf("0\n");
continue;
}
}
LL ans=;
l>>=;
for(int i=;i<;++i){
if(!a[i])continue;
a[i]>>=;
ans=(ans*c[l][a[i]])%mod;
l-=a[i];
}
printf("%I64d\n",ans);
}
return ;
}

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 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5651 Description As we all k ...

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

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

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

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

  5. HDU - 5651 xiaoxin juju needs help 逆元模板

    http://acm.hdu.edu.cn/showproblem.php?pid=5651 题意:生成回文串.输出所有回文串的可能数. 题解:mod除法会损失高位,用逆元来代替除法,模板如下 ac代 ...

  6. HDU 5651 xiaoxin juju needs help

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

  7. HDU 2096 小明A+B --- 水题

    HDU 2096 /* HDU 2096 小明A+B --- 水题 */ #include <cstdio> int main() { #ifdef _LOCAL freopen(&quo ...

  8. [HDU 2602]Bone Collector ( 0-1背包水题 )

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2602 水题啊水题 还给我WA了好多次 因为我在j<w[i]的时候状态没有下传.. #includ ...

  9. hdu 2117:Just a Numble(水题,模拟除法运算)

    Just a Numble Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tot ...

随机推荐

  1. jQuery.hhNewSilder 滚动图片插件

    /**  * jQuery.hhNewSilder 滚动图片插件  * User: huanhuan  * QQ: 651471385  * Email: th.wanghuan@gmail.com ...

  2. ecshop用户中心订单详情增加快递单物流信息查询显示的功能

    1,themes\default\user_transaction.dwt 找到: <!--{if $action eq order_detail} --> 在下面一行加入: <st ...

  3. IOS中将十进制色值转换成UIColor

    最近因项目需要,在网上找了一些代码,整合了一下,实现的效果就是将10进制的RGB色值转换IOS用的UIColor,方法还有缺陷,有待改进 UIColor *getColorFromString(NSS ...

  4. ios中label的文字多种颜色显示

    一 .在初始化方法中把所有需要高亮关键字的label加入到labels数组中,并且把这些label原来字体的颜色加入到 labelTextColors中 ,代码如下 self.labels = [NS ...

  5. hadoop基本命令1

    (大讲台——国内首个it在线混合式自适应学习平台,轻量级的高薪就业和技能提升解决方案) 1.列出所有Hadoop Shell支持的命令$ bin/hadoop fs -help2.显示关于某个命令的详 ...

  6. BeeFramework

    A semi-hybrid framework that allows you to create mobile apps using Objective-C and XML/CSS

  7. Android开发(一):环境搭建

    引言 本系列将记录我在步入Android开发过程中的一些流水账及经验,如有疏漏,还望不吝赐教. 目录 1.JDK安装及配置 2.Eclipse.Android SDK ADT安装及配置 正文 1.JD ...

  8. 线上问题:如何定位解决CPU高占有率

    (原文转自:http://www.blogjava.net/hankchen) 以我们最近出现的一个实际故障为例,介绍怎么定位和解决这类问题. 根据top命令,发现PID为28555的Java进程占用 ...

  9. Git的一些基本概念

    Git的一些基本概念 设置自己的用户名和邮箱git config –global user.name "Your Name"git config –global user.emai ...

  10. java连接oracle数据库的实现代码

    package connectionOracleDatabase; import java.sql.Connection; import java.sql.DatabaseMetaData; impo ...