震惊!阶乘逆元处理背后竟有如此玄机……

题目描述

贝壳找房举办了一场计数比赛,比赛题目如下。

给一个字符串 s 和字符串 t,求出 s 的所有去重全排列中 t 出现的次数。比如aab的去重全排列为aabababaa。注意aaaa算出现两次aaa

你的老大希望你帮他写一个程序作弊。

输入格式

第一行一个整数 TT,表示数据组数。

每组数据中,第一行一个字符串 ss,第二行一个字符串 tt。

数据保证 1≤T≤100, 1≤∣t∣≤∣s∣≤105,t,s 只包含小写字母。

输出格式

输出一共 TT 行,每行一个整数,表示所求答案对 10^9+7取模的结果。

样例输入

2
aab
ab
aabb
ab

样例输出

2
6

题目分析

其实就是一道挺简单的数论基础题……

但是复赛时候我想复杂了很多,一直在考虑将目标串拆成多个原串后如何去重之类的问题。

例如原串=ab,目标串=ababaa。然后设t=ab,目标串就有taaab/ttaa这两种情况,于是陷入去重无法自拔……

呃实际上冷静分析就可以发现,只用考虑拆一次的结果,那么就套上可重全排列的公式就好了。

 #include<bits/stdc++.h>
const long long MO = 1e9+;
const long long maxn = ; long long ans,inv[maxn],mp[maxn];
int n,tt;
char s[maxn],t[maxn];
bool fl; int main()
{
inv[] = inv[] = ;
for (int i=; i<maxn; i++)
inv[i] = (long long)(MO-MO/i)*inv[MO%i]*inv[i-]%MO;
scanf("%d",&tt);
while (tt--)
{
fl = ;
memset(mp, , sizeof mp);
scanf("%s%s",s,t);
for (int i=; s[i]; i++)
mp[s[i]]++;
for (int i=; t[i]; i++)
mp[t[i]]--, fl = fl||(mp[t[i]]<);
if (fl){
printf("0\n");
continue;
}
n = strlen(s)-strlen(t);
ans = n+;
while (n--) ans = ans*(n+)%MO;
for (char i='a'; i<='z'; i++)
ans = (long long)ans*inv[mp[i]]%MO;
printf("%lld\n",ans);
}
return ;
}

然而!上面这个程序是会WA的!

在历经好长一段时间的调试之后,终于发现facinv中间溢出了……

那么大不了就改成这样嘛,反正是多一个%MO的事情

 inv[] = inv[] = ;
for (int i=; i<maxn; i++)
inv[i] = (MO-MO/i)%MO*inv[MO%i]%MO*inv[i-]%MO;

可是依旧WA   :)

 inv[] = inv[] = ;
for (int i=; i<maxn; i++)
inv[i] = (MO-MO/i)%MO*inv[MO%i]%MO;
for (int i=; i<maxn; i++) inv[i] = inv[i-]*inv[i]%MO;

最后只能改成上面这个样子……

行吧终于过了。

END

【数论】贝壳找房计数比赛&&祭facinv的更多相关文章

  1. 2019 贝壳找房java面试笔试题 (含面试题解析)

      本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.贝壳找房等公司offer,岗位是Java后端开发,因为发展原因最终选择去了贝壳找房,入职一年时间了,也成为了面 ...

  2. 最新 贝壳找房java校招面经 (含整理过的面试题大全)

    从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.贝壳找房等10家互联网公司的校招Offer,因为某些自身原因最终选择了贝壳找房.6.7月主要是做系统复习.项目复盘.Leet ...

  3. 2018 计蒜之道 初赛 第五场 A 贝壳找房搬家

    贝壳找房换了一个全新的办公室,每位员工的物品都已经通过搬家公司打包成了箱子,搬进了新的办公室了,所有的箱子堆放在一间屋子里(这里所有的箱子都是相同的正方体),我们可以把这堆箱子看成一个 x*y*z 的 ...

  4. 2018 计蒜之道复赛 贝壳找房魔法师顾问(并查集+dfs判环)

    贝壳找房在遥远的传奇境外,找到了一个强大的魔法师顾问.他有 22 串数量相同的法力水晶,每个法力水晶可能有不同的颜色.为了方便起见,可以将每串法力水晶视为一个长度不大于 10^5105,字符集不大于  ...

  5. 上海二手房8月排名:链家、悟空找房、中原、太平洋、我爱我家、易居、房天下、iwjw、房多多、房好多、q房网、、、

    房产网站总结 链家: 悟空找房: 中原: 太平洋: 我爱我家: 易居: 房天下: iwjw:有较多二手房信息 链家称王 房多多领跑电商平台 近日,云房数据公布了8月上海房产中介成交数据,从排行榜来看, ...

  6. 【BZOJ5332】[SDOI2018]旧试题(数论,三元环计数)

    [BZOJ5332][SDOI2018]旧试题(数论,三元环计数) 题面 BZOJ 洛谷 题解 如果只有一个\(\sum\),那么我们可以枚举每个答案的出现次数. 首先约数个数这个东西很不爽,就搞一搞 ...

  7. 上海租房找房建议及条件,上海IT行业开发常见公司的位置地点

    上海租房,找房条件 以2号地铁线为中心,优先选择(回家方便,重点!),交通设施较集中地铁:2,3,4 区:普陀区,静安区,长宁区,闸北区,浦东新区,闵行区,徐汇区 路:镇坪路,威宁路,娄山关路,中山公 ...

  8. (转) Arcgis4js实现链家找房的效果

    http://blog.csdn.net/gisshixisheng/article/details/71009901 概述 买房的各位亲们不知是否留意过链家的"地图找房",这样的 ...

  9. 【数论,找规律】Uva 11526 - H(n)

    原来做过的题再看还是没想出来,看来当时必然没有真正理解.这次回顾感觉理解更透彻了. 网上的题解差不多都是一个版本,而且感觉有点扯.根据n=20猜出来的? 好吧哪能根据一个就猜到那么变态的公式.其实这题 ...

随机推荐

  1. python操作redis之String操作

    # __author__ = 'STEVEN' import redis,time # 方式1,直接链接操作 # r = redis.Redis(host='192.168.43.22',port=6 ...

  2. [软件工程基础]PhyLab 功能规格说明书

    前言 Sigma 团队想要在 PhyLab 上做的增量改进见需求分析.六个功能中只有题库和图文流程需要对界面进行大的改动,剩下的功能在用户看来仅仅是在原有界面上有内容上的扩充,因此不在功能规格说明书的 ...

  3. Unity Shader入门精要学习笔记 - 第6章 开始 Unity 中的基础光照

    转自冯乐乐的<Unity Shader入门精要> 通常来讲,我们要模拟真实的光照环境来生成一张图像,需要考虑3种物理现象. 首先,光线从光源中被发射出来. 然后,光线和场景中的一些物体相交 ...

  4. ecshop的商品列表输出中多出一条空记录

    这个是ECSHOP的一个BUG, 在模板中显示商品列表的位置,加一句{if $goods}判断商品存在才显示: {foreach from=$goods_list item=goods} {if $g ...

  5. PHP采集利器 Snoopy 试用心得

    Snoopy是什么? Snoopy是一个php类,用来模仿web浏览器的功能,它能完成获取网页内容和发送表单的任务. Snoopy的一些特点: * 方便抓取网页的内容 * 方便抓取网页的文本内容 (去 ...

  6. 图像处理库CImg

    CImg 是一个用C++编写的开源数字图像处理库.   作者介绍   作者David Tschumperlé, 之前是法国La Rochelle大学的一名教授,现受雇于CNRS 图像组.据说作者从19 ...

  7. Mvc 多级控制器 路由重写 及 多级Views目录 的寻找视图的规则

    1.那么我们再来看我们需要的访问方式,如下图 如果我们要访问Admin下的TestController里面的Index页面,那么我们输入Test/Index,这个肯定不行的.因为TestControl ...

  8. 12.JAVA-基本数据类型的包装类操作

    1.基本数据类型的包装类 java是一个面向对象编程语言,也就是说一切操作都要用对象的形式进行.但是有个矛盾: 基本数据类型(char,int,double等)不具备对象特性(不携带属性和方法) 这样 ...

  9. 修改Magento默认Export Customers功能

    Magento 1.x的Export功能可以很方便地对Customers的数据进行导出,但是存在几个不足(或者说不方便)的地方: 1. 默认导出的 .CSV文件是以UTF-8格式编码的,而MS Exc ...

  10. CSS子元素设置margin-top作用于父容器?

    CSS子元素设置margin-top作用于父容器? 原因: In this specification, the expression collapsing margins means that ad ...