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. Ruby字符串

    在Ruby中的String对象持有和操纵的任意序列的一个或多个字节,通常表示人类语言的字符表示.简单的字符串文本括在单引号中,如 'This is a simple Ruby string liter ...

  2. CSS样式表基础

    CSS的样式表其实就是美观页面的,加一些样式. 一.样式表的三种分类: ①内联样式:写在某一个标签里面的样式. 优点:控制精确. 缺点:代码重用性差.(太多了不好写)页面代码乱.(太乱,后期不方便看) ...

  3. 使用静态函数impl模式做接口

    使用静态函数impl模式做接口 impl即桥接模式,主要是为了隐藏数据和减少不必要的编译. 普通的impl模式做接口一般是: A类是接口,B类继承A类,是A类的实现,C类,包含A类和B类的头文件,把B ...

  4. 剑指Offer-【面试题05:从头到尾打印链表】

    package com.cxz.question5; import java.util.Stack; /* * 输入个链表的头结点,从尾到头反过来打印出每个结点的值. * */ public clas ...

  5. laravel5笔记

    数据库表创建E:\PHP\learnlaravel5>php artisan migrate 创建modelE:\PHP\learnlaravel5>php artisan make:mo ...

  6. 关于Charles抓取手机访问的Https请求

    准备工作 本次测试的Charles版本为3.9.1 · 首先在Charles中开启HTTP请求的远程监听. · 然后分别在手机和Mac上安装Charles的证书. 注意:证书一定要一致,否则抓取不到. ...

  7. CozyRSS开发记录17-Html2Xaml

    CozyRSS开发记录17-Html2Xaml 1.RssContentView还需要优化 上回做了RssContentView的显示,但是对于rss返回的描述(摘要),连换行的没有,更别说里面还有h ...

  8. RDD/Dataset/DataFrame互转

    1.RDD -> Dataset val ds = rdd.toDS() 2.RDD -> DataFrame val df = spark.read.json(rdd) 3.Datase ...

  9. 毕业论文—使用js将canvas保存为图片文件,并且自定义文件名

    该文章引用http://blog.csdn.net/qq547276542/article/details/51906741 1.从canvas中直接提取图片元数据 // 图片导出为 png 格式 v ...

  10. CSS中使用text-transform实现首字母大写

    CSS中首字母大写怎么实现?日常生活中需求方对英文的要求比较多,有的时候需要让英文单词或拼音首个字母大写;有的时候需要让全文中英文单词全大写或小写.这时候我们就需要text-transform属性了. ...