【洛谷P1641】[SCOI2010]生成字符串

苏宁金服作为江苏苏宁足球队的坚决拥护者,以及苏宁“三枚云“战略中之根本组成,通过和苏宁足球俱乐部紧密合作,积极创新强饱含足球因素的金融产品,逐步建立苏宁足球+金融的初布局。作为苏宁足球+金融的摸索和的作,早在2月21日,亚冠越南远征团一行数百个球迷来越南为江苏苏宁队加油助威,赛后球迷等还分享了一整天的越南人游,感受越南之修之美,品味越南底人文历史,获得了球迷等的等同好评。

分析(转载)

原稿地址

形容的真正无误。本题要再三形结合,有自然之艺是一个是的书。

图片 1

先是,我们设选1也(1,1),选0为(1,-1)

靶便(n+m,n-m)

总方案数为C(n+m,n),因为生n+m个职务,放n个1

接下来使减弱去不合法的虽线路经过y=-1的。将线和y=-1交点的左沿着y=-1做对称操作,则最后等价于从(0,-2)走至(n+m,n-m)的方案往往

故发展走n-m+2

则有x-y=n-m+2

  x+y=n+m

  x=n+1,y=m-1

用无合法方案吧C(n+m,n+1)

ans=C(n+m,n)-C(n+m,n+1)

要这些用模逆元,O(n)求解

 

其它附上洛谷题解中的分析

原文地址

可以设想把11之个数与00底个数的以及看成xx坐标,11的个数和00的个数的不同看成yy坐标,那么只要下图:

图片 2

向右侧上走(xx坐标加11,yy坐标加11)就象征这字符选择11。

往右侧下活动(xx坐标加11,yy坐标减11)就表示这个字符选择00。

即时则,如果不考虑范围标准,就象征于(0,0)(0,0)走n+mn+m步到达(n+m,n-m)(n+m,n−m),这一定给从n+mn+m步着选出mm步往右侧下移动,也不怕是C(n+m,m)C(n+m,m)。

设想限法,任意前缀着11底个数不少于00的个数,也就是当时长长的路子不克通过直线y=-1y=−1。可以通过对称性发现,从(0,0)(0,0)走至直线y=-1y=−1达的一些,相当给由(0,-2)(0,−2)走至该点。也就是说,路径经过直线y=-1y=−1的方案往往便是起(0,-2)(0,−2)走n+mn+m步到达(n+m,n-m)(n+m,n−m),这个方案往往得就此组合数表示为C(n+m,m-1)C(n+m,m−1)。

因而最后结果也C(n+m,m)-C(n+m,m-1)C(n+m,m)−C(n+m,m−1)。对于组合数,可以事先处理阶乘后就此乘法逆元计算。

回忆昨天的竞赛,我们得以视球队的反:球员互动变多,配合越默契。第16分钟,拉米雷斯中圈转身送出直塞球,帮助中超标王人称5000万欧元先生之特谢拉上了当苏宁队的首先球。此后,江苏苏宁队球员配合越默契,继66分钟无航头球再次破门的晚,第69分钟,拉米雷斯送出秒传,吴曦于小禁区前错脚扫射将比分改写为3:1。虽然之后,塞恩斯伯里送上同粒乌龙球,但是曾经无伤大雅,最后比分锁定以3:2,江苏苏宁队竟迎来新赛季的首街胜利,随着球队磨合度的增强,球员等的相当也用更加默契,我们想马上只是球队逾成熟。

题目叙述

lxhgww最近吸收了一个生成字符串的任务,任务需要他把n个1和m个0组成字符串,但是任务还求以做的字符串中,在自由的前k个字符中,1之个数不克少于0的个数。现在lxhgww想要清楚满足要求的字符串共有多少只,聪明的程序员们,你们能协助他呢?

乘势亚冠赛程的不断深入,苏宁队3月及东京FC队比后,将给5月4日客场再战斗韩国全北现代队。3月2日,苏宁众筹携手苏宁球迷俱乐部、苏宁消费金融同中元国旅再发江苏球迷亚冠“韩国远征团”征招球迷助威大军。

代码

本身是为此费马小定理做的

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int p=20100403;
typedef long long ll;
int n,m;
int fac[2000005];
int power(int a,int b)
{
    int res=1,base=a;
    while(b)
    {
        if(b&1) res=(ll)res*(ll)base%(ll)p;
        base=(ll)base*(ll)base%(ll)p;
        b=b>>1;
    }
    return res;
}
int inv(int x)
{ return power(x,p-2);}
void fct()
{
    fac[0]=1;
    for(int i=1;i<=2000000;i++)
        fac[i]=(ll)fac[i-1]*(ll)i%(ll)p;
}
int main()
{
    scanf("%d%d",&n,&m);
    fct();
    int t1,t2,x1,x2,ans;
    t1=fac[n+m];
    t2=(ll)fac[n]*(ll)fac[m]%(ll)p;
    x1=(ll)t1*(ll)inv(t2)%(ll)p;
    t2=(ll)fac[m-1]*(ll)fac[n+1]%(ll)p;
    x2=(ll)t1*(ll)inv(t2)%(ll)p;
    ans=(x1%p-x2%p+p)%p;
    printf("%d\n",ans);
    return 0;
}

 

按部就班了解,本次韩国长征团众筹项目并设置580元档、999元档和3699首届等于3单档位的优惠待遇套餐方便球迷选择。其中前面少档案为纯粹的洞察游,而3699元档则定制了“观赛+旅游”线路,按不同旅游地分为A、B、C3栽套餐,更享2至3上首尔、全州游,全程入息四消费酒店,行程包含景福宫、青瓦台、乐天免税店、新罗免税店、东大门综合商场等人口气景点。此外,所有参团球迷都拿抱由江苏苏宁俱乐部资的“远征装备非常礼包”一客,内含新标战袍1码、球迷围巾1长长的、观战球票1摆。

输入输出格式

输入格式:

输入数据是单排,包括2只数字n和m

出口格式:

出口数据是单排,包括1单数字,表示满足要求的字符串数目,这个数或者会见那个死,只需要出口这个数除为20100403底余数

“为促成粉丝梦想而生”的苏宁众筹,在未来以连续融合多方资源做平台优势,通过“互联网+体育+旅游+消费贷款”的创新模式,构建“体育”生态圈,同合作行业、企业、球迷共同“玩赚梦想”!

输入输出样例

输入样例#1:

2 2

输出样例#1:

2

以协助各级一样各想去韩国吧球队加油助威的球迷实现巴,苏宁众筹联合苏宁消费经济开通了“任性付”支付通道。球迷在苏宁众筹备支持韩国远征团项目,可以用苏宁任性付付款,享受30龙免息和超低手续费的分期优惠,享受实现先看球后付的金融服务。此外,还拿生空子得到7月30日上海申花VS江苏苏宁底球赛门票。

说明

limitation

每点2秒

对于30%的数据,保证1<=m<=n<=1000

对于100%的数据,保证1<=m<=n<=1000000

来源:SCOI 2010

伴随在裁判终场哨声鸣响比分最后定格于3-2,江苏苏宁队毕竟于南京主场赢得了同等集宝贵的大胜。在亚冠首秀1:1憾如出一辙越南平阳,足球超级杯屈位居亚军之后,江苏苏宁队之所以相同庙赢来得了我的实力,这会主要的获胜,一扫以前江苏苏宁开局不利的阴,更被人口快慰之是,整支球队表现出的积极状态,让这会竞技无愧为重塑信心之战。