BestCoder Round #77 (div.2) -xiaoxin juju needs help(杨辉三角)

xiaoxin juju needs help

Accepts: 150 Submissions: 966 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) 问题描述
xiaoxin巨从小就喜欢字符串,六年级的时候他就知道了什么是回文串。这时,xiaoxin巨说到:如果一个字符串 SSS 是回文串,那么该字符串从前往后看和从后往前看是一样一样的。六年级的暑假,xiaoxin很快就做完了暑假作业,然后到腾讯做起了实习生。这日,leader给了xiaoxin一个字符串,请xiaoxin帮忙写一个函数来生成所有可能的回文串,可以任意改变字符串的顺序但是不可以扔掉某个字符。并且leader告诉xiaoxin,每生成一个不一样的回文串就可以得到一颗西瓜糖。请你帮忙计算xiaoxin的leader最多需要买多少颗西瓜糖呢?
输入描述
多组测试数据。第一行包含一个整数 T(T≤20)T(T\leq 20)T(T20) 表示组数。每组测试数据给出一个只包含小写字母的字符串 S(1≤length(S)≤1,000)S(1\leq length(S)\leq 1,000)S(1length(S)1,000)
输出描述
对于每组测试数据,输出一个数, 表示leader需要买的西瓜糖的个数,结果对 1,000,000,0071,000,000,0071,000,000,007 取模。
输入样例
3
aa
aabb
a
输出样例
1
2
1
 
一开始这题没想到用杨辉三角,结果直接暴力一波组合,结果因为丢失精度而wa了,之后看了看题解发现可以用杨辉三角来算就不存在精度问题了。
 
AC代码:
 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
#define CRL(a) memset(a,0,sizeof(a))
#define QWQ ios::sync_with_stdio(0)
#define inf 0x3f3f3f3f
typedef unsigned long long LL;
typedef  long long ll;const int T = 10000+50;
const int mod = 1000000007;//ll comp(int x,int y)
//{
//	double cm = 1.0;
//	while(y)
//	{
//		cm *= double(x--)/double(y--);
//		while(cm-mod>0.0000000001)cm-=mod;
//	}
//	return cm+0.5;
//}
char s[1010];
int v[30];ll C[1010][1010];void Init()
{for(int i=0;i<1001;++i){C[i][0] = C[i][i] = 1;}for(int i=0;i<1001;++i){for(int j=1;j<=i-1;++j){C[i][j] = (C[i-1][j] + C[i-1][j-1]) % mod;}}}int main()
{#ifdef zscfreopen("input.txt","r",stdin);
#endifint n,m,i,j,k,len;scanf("%d",&n);Init();while(n--){bool flag = false;memset(v,0,sizeof(v));scanf("%s",s);len = strlen(s);for(i=0;s[i];++i){v[s[i]-'a']++;}int cnt = 0;for(i=0;i<26;++i){if(v[i]&1)cnt++;}if(cnt>1||cnt==1&&len%2==0){printf("0\n");continue;}len /=2;ll ans=1;for(i=0;i<26;++i){if(!v[i])continue;ans = (ans * C[len][v[i]/2])%mod;len -= v[i]/2;}printf("%lld\n",ans);}return 0;
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部