String

Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2552    Accepted Submission(s): 755

Problem Description
Recently,
lxhgww received a task : to generate strings contain '0's and '1's
only, in which '0' appears exactly m times, '1' appears exactly n times.
Also, any prefix string of it must satisfy the situation that the
number of 1's can not be smaller than the number of 0's . But he can't
calculate the number of satisfied strings. Can you help him?
 
Input
T(T<=100) in the first line is the case number.
Each case contains two numbers n and m( 1 <= m <= n <= 1000000 ).
 
Output
Output the number of satisfied strings % 20100501.
 
Sample Input
1
2 2
 
Sample Output
2
 
Author
lxhgww
 
Source
 
题意:
0,1组成的串,前缀中1始终多于0.
求卡特兰数但是数据是1000000;
代码:
//C(n+m,n)-C(n+m,n+1)=(n+m)!*(n+1-m)/m!*(n+1)!;
//卡特兰数,数据太大。n个1,m个0,从(0,0)出发可以将1看作是向上走,0看作是向右走,这样合法的路径必定在直线y=x-1上方且不与他相交
//做(0,0)关于y=x-1的对称点(1,-1),从(1,-1)出发到终点(m,n)的路径必定与直线相交,将这条路径关于y=x-1对称过去就是从(0,0)
//到终点(n,m)不合法的情况。用总的减去就行
//求n,n!质因数模板
#include<bits\stdc++.h>
using namespace std;
typedef long long ll;
#define mod 20100501
#define maxm 2000006
#define maxn 1000006
int p[maxn];
int prime[maxn],res,num;
bool is_prime[maxm];
void get_prime() //得到素数表
{
prime[]=;
res=;
for(int i=;i<maxm;i+=)
if(!is_prime[i])
{
for(int j=i;j<maxm;j+=i)
is_prime[j]=;
prime[res++]=i;
}
}
void divide1(int x) //分解x的质因数
{
int cnt=;
while(x>)
{
while(x%prime[cnt]==)
{
p[cnt]++;
x/=prime[cnt];
}
cnt++;
}
num=max(num,cnt);
}
void divide2(int x,bool flag) //分解x!的质因数,flag判断是分子还是分母
{
int cnt=;
while(prime[cnt]<=x)
{
int tem=x;
while(tem)
{
if(flag)
p[cnt]+=tem/prime[cnt];
else p[cnt]-=tem/prime[cnt];
tem/=prime[cnt];
}
cnt++;
}
num=max(num,cnt);
}
ll make(ll x,ll y) //x,y不知为何用int就不行,得到x^y。
{
ll ans=;
x%=mod;
while(y) //很巧妙
{
if(y&)
ans=(ans*x)%mod;
x=(x*x)%mod;
y/=;
}
return ans;
}
ll get_ans()
{
ll ans=;
for(int i=;i<=num;i++)
{
if(p[i])
ans=make(prime[i],p[i])*ans%mod;
}
return ans;
}
int main()
{
int t,n,m;
scanf("%d",&t);
get_prime();
while(t--)
{
num=;
memset(p,,sizeof(p));
scanf("%d%d",&n,&m);
divide1(n+-m);
divide2(n+m,);
divide2(m,);
divide2(n+,);
ll ans=get_ans();
printf("%lld\n",ans);
}
return ;
}

*HDU3398 数学的更多相关文章

  1. 数学思想:为何我们把 x²读作x平方

    要弄清楚这个问题,我们得先认识一个人.古希腊大数学家 欧多克索斯,其在整个古代仅次于阿基米德,是一位天文学家.医生.几何学家.立法家和地理学家. 为何我们把 x²读作x平方呢? 古希腊时代,越来越多的 ...

  2. 速算1/Sqrt(x)背后的数学原理

    概述 平方根倒数速算法,是用于快速计算1/Sqrt(x)的值的一种算法,在这里x需取符合IEEE 754标准格式的32位正浮点数.让我们先来看这段代码: float Q_rsqrt( float nu ...

  3. MarkDown+LaTex 数学内容编辑样例收集

    $\color{green}{MarkDown+LaTex 数学内容编辑样例收集}$ 1.大小标题的居中,大小,颜色 [例1] $\color{Blue}{一元二次方程根的分布}$ $\color{R ...

  4. 深度学习笔记——PCA原理与数学推倒详解

    PCA目的:这里举个例子,如果假设我有m个点,{x(1),...,x(m)},那么我要将它们存在我的内存中,或者要对着m个点进行一次机器学习,但是这m个点的维度太大了,如果要进行机器学习的话参数太多, ...

  5. Sql Server函数全解<二>数学函数

    阅读目录 1.绝对值函数ABS(x)和返回圆周率的函数PI() 2.平方根函数SQRT(x) 3.获取随机函数的函数RAND()和RAND(x) 4.四舍五入函数ROUND(x,y) 5.符号函数SI ...

  6. *HDU 2451 数学

    Simple Addition Expression Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Ja ...

  7. 如何解决Maple的应用在数学中

    对任意数学和技术学科的研究员.教师和学生而言,Maple是一个必备的工具.通过Maple,教师将复杂数学问题注入生命,学生的精力集中在概念理解上而不是如何使用工具上,研究员可以开发更复杂的算法或模型. ...

  8. 如何让Maple中的数学引擎进入你的桌面应用程序和网站

    MapleNET数学服务套件将Maple 2015强大的数学引擎引入您的应用程序和网站.使用MapleNET,您可以添加数学计算和可视化功能到网页和桌面程序中,通过互联网/局域网分享“活”的Maple ...

  9. 【原创】开源Math.NET基础数学类库使用(07)常用的数学物理常数

                   本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新  开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 1.前 ...

随机推荐

  1. 考前预习(Ubuntu配备)

    这几天考前预习,趁现在不想预习,写点之前就想写的东西吧. 贴一下个人认为有用的,在Ubuntu装机后的一些小事.不过挺杂的,主要是拿来给以后的自己看,以及让现在无聊的我有点事做. 首先,Ubuntu官 ...

  2. Qt在ui中使用代码添加新的控件

    QLabel* label = new QLabel(ui->centralWidget);

  3. Django框架-目录文件简介

    Rhel6.5 Django1.10 Python3.5 Django框架-目录文件简介 1.介绍Django Django:一个可以使Web开发工作愉快并且高效的Web开发框架. 使用Django, ...

  4. Oracl中sql书写技巧

    1.写脚本(1)为什么不直接设置回滚点?因为服务器上数据库是很多人使用的,所以除了自己操作外,有很多人操作.如果设置回滚点时,回滚后,很多人操作都消失了,因此savepoint不可以.但是可以自己书写 ...

  5. MysqlNDB集群配置

    为了避免不必要的资源分配,默认情况下是不启动ndbcluster引擎.

  6. Tensorflow serving的编译

    Tensorflow serving提供了部署tensorflow生成的模型给线上服务的方法,包括模型的export,load等等. 安装参考这个 https://github.com/tensorf ...

  7. jquery json数组(排序)

    ar nums = ['12','2','5','36','4']; $('#show7').html(nums.join('<br/>')); //定义了sort的比较函数 nums = ...

  8. 优化Linux内核参数

    转自:http://www.centoscn.com/CentOS/config/2013/0804/992.html vim /etc/sysctl.conf 1.net.ipv4.tcp_max_ ...

  9. 【手把手教你全文检索】Apache Lucene初探

    PS: 苦学一周全文检索,由原来的搜索小白,到初次涉猎,感觉每门技术都博大精深,其中精髓亦是不可一日而语.那小博猪就简单介绍一下这一周的学习历程,仅供各位程序猿们参考,这其中不涉及任何私密话题,因此也 ...

  10. [leetcode]题型整理之用bit统计个数

    137. Single Number II Given an array of integers, every element appears three times except for one. ...