HDU 5651 xiaoxin juju needs help 数学

HDU 5651 xiaoxin juju needs help 数学


xiaoxin juju needs help

题目连接:

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

Description

As we all known, xiaoxin is a brilliant coder. He knew palindromic strings when he was only a six grade student at elementry school.

This summer he was working at Tencent as an intern. One day his leader came to ask xiaoxin for help. His leader gave him a string and he wanted xiaoxin to generate palindromic strings for him. Once xiaoxin generates a different palindromic string, his leader will give him a watermelon candy. The problem is how many candies xiaoxin’s leader needs to buy?

Input

This problem has multi test cases. First line contains a single integer T(T≤20) which represents the number of test cases.
For each test case, there is a single line containing a string S(1≤length(S)≤1,000).

Output

For each test case, print an integer which is the number of watermelon candies xiaoxin’s leader needs to buy after mod 1,000,000,007.

Sample Input

3
aa
aabb
a

Sample Output

1
2
1

Hint

题意

给你一个串,你可以改变字符位置

问你能够形成多少种回文串。

题解:

首先把答案为0的情况判断掉

然后就很简单了,因为回文嘛,所以左右肯定相同

然后就可以排列组合怼一波了

就相当于选位置,把所有字母安上去。

C(x1,x2)*C(y1,y2)….这种

代码

#include<stdio.h>
#include<iostream>
#include<math.h>
#include<cstring>
using namespace std;
const int mod = 1e9+7;
const int maxn = 1e5+7;
int num[30];
typedef long long ll;
ll fac[maxn];
ll qpow(ll a,ll b)
{
    ll ans=1;a%=mod;
    for(ll i=b;i;i>>=1,a=a*a%mod)
        if(i&1)ans=ans*a%mod;
    return ans;
}
ll C(ll n,ll m)
{
    if(m>n||m<0)return 0;
    ll s1=fac[n],s2=fac[n-m]*fac[m]%mod;
    return s1*qpow(s2,mod-2)%mod;
}
void solve()
{
    memset(num,0,sizeof(num));
    string s;cin>>s;
    for(int i=0;i<s.size();i++)
        num[s[i]-'a']++;
    if(s.size()%2==0)
    {
        for(int i=0;i<26;i++)
            if(num[i]%2==1)
            {
                printf("0\n");
                return;
            }
    }
    else
    {
        int cnt = 0;
        for(int i=0;i<26;i++)
            if(num[i]%2==1)cnt++;
        if(cnt!=1)
        {
            printf("0\n");
            return;
        }
    }
    long long ans = 1;
    long long las = s.size();
    for(int i=0;i<26;i++)
    {
        ans = (ans * C(las/2,num[i]/2))%mod;
        las-=num[i];
    }
    printf("%lld\n",ans);
}
int main()
{
    fac[0]=1;
    for(int i=1;i<maxn;i++)
        fac[i]=fac[i-1]*i%mod;
    int t;scanf("%d",&t);
    while(t--)solve();
    return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109105.html原文链接:https://javaforall.net

(0)
上一篇 2021年9月13日 下午2:00
下一篇 2021年9月13日 下午3:00


相关推荐

  • 成长之路——InfoQ视频心得笔记[通俗易懂]

    这期是普元信息的主任架构师,顾伟! 视频地址: http://mp.weixin.qq.com/s/0KE_CCU3cWwzvr7D5ENtsQ少年,在路上!不卑不亢!!!1:换维思考 墨菲定律:如果有两种或两种以上的方式去做某件事情,而其中一种选择方式将导致灾难,则必定有人会做出这种选择。彼得定律:向上爬的定律!错误和面对压力方面的表现!犯错:积累沉淀,不要犯相同的错误两次!2:人

    2022年2月25日
    38
  • Idea激活码最新教程2018.3.6版本,永久有效激活码,亲测可用,记得收藏

    Idea激活码最新教程2018.3.6版本,永久有效激活码,亲测可用,记得收藏Idea 激活码教程永久有效 2018 3 6 激活码教程 Windows 版永久激活 持续更新 Idea 激活码 2018 3 6 成功激活

    2025年5月24日
    5
  • java 字符数组 合并_字符数组合并?c数组合并?java数组合并问题「建议收藏」

    java 字符数组 合并_字符数组合并?c数组合并?java数组合并问题「建议收藏」本文关键词数组合并,由教案网整理发布publicstaticString[]getOneArray(){String[]a={“0″,”1″,”2”};String[]b={“0″,”1″,”2”};String[]c=newString[a.length+b.length];for(intj=0;j<a.length;++j)…

    2022年6月23日
    33
  • java servlet容器有哪些_servlet容器是什么

    java servlet容器有哪些_servlet容器是什么Servlet 容器是一个程序 它是与 servlet 交互的 Web 服务器的一部分 它可以从 web 页面接收请求后再将这些请求重定向到 Servlet 对象中 然后将动态生成的结果返回到正确的位置中 在 Java 中 Servlet 容器用于生成动态网页 因此 servlet 容器是与 javaservlet 交互的 Web 服务器的基本部分 接下来将在文章中为大家详细介绍 Servlet 容器是什么 希望对大家有所帮助 推荐

    2025年8月23日
    6
  • 理解 AMQP协议

    理解 AMQP协议当前各种应用大量使用异步消息模型 并随之产生众多消息中间件产品及协议 标准的不一致使应用与中间件之间的耦合限制产品的选择 并增加维护成本 AMQP 是一个提供统一消息服务的应用层标准协议 基于此协议的客户端与消息中间件可传递消息 并不受客户端 中间件不同产品 不同开发语言等条件的限制 nbsp 当然这种降低耦合的机制是基于与上层产品 语言无关的协议 AMQP 协议是一种二进制协议 提供客户端应用与消息

    2026年3月17日
    1
  • 手游联运系统海外版丨游戏联运系统海外版丨海外游戏联运系统丨海外版游戏SDK

    手游联运系统海外版丨游戏联运系统海外版丨海外游戏联运系统丨海外版游戏SDK1 国际化手游联运系统一站式解决方案 实现跨地区 语言 支付渠道完美融合 2 海外版专属 SDK 多语言平台开发 支持国际支付方式 支持海外应用商店上架 支持海外社交平台登陆 3 PC 官网 同 PC 端风格 支持多语言 自定义网站皮肤 满足不同玩家用户审美需求 免费提供海量游戏接入 同时支持海外游戏接入 运营自由 4 wap 官网 同 PC 端风格 5 APP 盒子 营销活丰富 答题 礼包 游戏排行榜 小号回收等活动 视频分享 玩家互动 积分兑换等 安卓和苹果双端覆盖

    2026年3月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号