洛谷P5274 优化题(ccj)

题目背景

CCJCCJ 在前往参加 Universe \ OIUniverse OI 的途中。。。

题目描述

有一个神犇 CCJCCJ,他在前往参加 Universe \ OIUniverse OI 的途中发现了一个超星系群。

在这个超星系群,有着一群生物 ccjccj,他们有着神奇的 ccjccj 文化,蕴含文史哲艺等多方面内容,具有悠远的历史。

他们有自己的文学,自己的科学,当然,还有自己的四叶草和幸运数。在 ccjccj 文化中,不断进化是生存的必要条件,于是在这个星系群中,有 kk种数字,一个数是幸运数,当且仅当该数中从高位往低位每个数位上的数字单调不降。

CCJCCJ 想考验这个超星系群,于是有了一个任务:求由 kk 种数字组成的数中 nn 位数的幸运数的个数。

由于 ccjccj 文化中缺少超级计算机,你需要帮助他们解决这个简单的问题。

输入输出格式

输入格式:

第一行一个整数opop,表示该测试点所属SubtaskSubtask的编号。其中op=0op=0表示样例。
第二行两个整数,nn,kk,意义如题目描述中所述。

输出格式:

一行一个整数,答案ansans对1000001910000019取模。

输入输出样例

输入样例#1:

0
9 9
输出样例#1:

24310
输入样例#2:

0
15 24
输出样例#2:

1257167

说明

数据范围:
Subtask \ 1Subtask 1(10 \%10%):n \leq 1000n≤1000,k \leq 200k≤200;
Subtask \ 2Subtask 2(40 \%40%):n \leq 10000n≤10000,k \leq 5000k≤5000;
Subtask \ 3Subtask 3(40 \%40%):n \leq 10000000n≤10000000,k \leq 10000000k≤10000000;
Subtask \ 4Subtask 4(10 \%10%):n \leq 10^{18}n≤1018,k \leq 10^{18}k≤1018;
Subtask \ 5Subtask 5(0 \%0%):n \leq 10^{100000}n≤10100000,k \leq 10^{100000}k≤10100000。


题解Here!

从$k$个数中任选若干个,求单调不降序列的个数。

单调不降有点烦,我们将选出来的序列中每一位$i$上的数都加上$i$。

即:原数列为${a_i}$,新数列为${b_i=a_i+i}$。

于是变成:

从$n+k-1$个数中任选若干个,求单调上升序列的个数。

于是这个题的答案就是:$$Ans=C_{n+k-1}^n$$

直接$Lucas$即可。

附代码:

#include<iostream>
#include<algorithm>
#include<cstdio>
#define MAXN 10000050
#define MOD 10000019LL
using namespace std;
long long n,k;
long long fact[MAXN],inv[MAXN];
inline long long read(){
long long date=0;char c=0;
while(c<'0'||c>'9')c=getchar();
while(c>='0'&&c<='9'){date=date*10+c-'0';c=getchar();}
return date;
}
long long mexp(long long a,long long b,long long c){
long long s=1;
while(b){
if(b&1)s=s*a%c;
a=a*a%c;
b>>=1;
}
return s;
}
void make(){
int m=MOD-1;
fact[0]=1;
for(int i=1;i<=m;i++)fact[i]=fact[i-1]*i%MOD;
inv[m]=mexp(fact[m],MOD-2,MOD);
for(int i=m-1;i>=0;i--)inv[i]=inv[i+1]*(i+1)%MOD;
}
inline long long C(long long n,long long m){
if(n<m)return 0;
if(m==0||m==n)return 1;
if(m==1||m==n-1)return n;
return fact[n]*inv[m]%MOD*inv[n-m]%MOD;
}
long long Lucas(long long n,long long m){
if(n<m)return 0;
if(m==0||m==n)return 1;
if(m==1||m==n-1)return n;
return Lucas(n/MOD,m/MOD)*C(n%MOD,m%MOD)%MOD;
}
int main(){
int t=read();
make();
n=read();k=read();
printf("%lld\n",Lucas(n+k-1,n));
return 0;
}

洛谷P5274 优化题(ccj)的更多相关文章

  1. [洛谷P1707] 刷题比赛

    洛谷题目连接:刷题比赛 题目背景 nodgd是一个喜欢写程序的同学,前不久洛谷OJ横空出世,nodgd同学当然第一时间来到洛谷OJ刷题.于是发生了一系列有趣的事情,他就打算用这些事情来出题恶心大家-- ...

  2. 洛谷 P4148 简单题 KD-Tree 模板题

    Code: //洛谷 P4148 简单题 KD-Tree 模板题 #include <cstdio> #include <algorithm> #include <cst ...

  3. 洛谷 P1167 刷题

    洛谷 P1167 刷题 洛谷传送门 题目描述 noip临近了,小A却发现他已经不会写题了.好在现在离竞赛还有一段时间,小A决定从现在开始夜以继日地刷题.也就是说小A废寝忘食,一天二十四小时地刷题. 今 ...

  4. 【noip】跟着洛谷刷noip题2

    noip好难呀. 上一个感觉有点长了,重开一个. 36.Vigenère 密码 粘个Openjudge上的代码 #include<cstdio> #include<iostream& ...

  5. 【AC自动机】洛谷三道模板题

    [题目链接] https://www.luogu.org/problem/P3808 [题意] 给定n个模式串和1个文本串,求有多少个模式串在文本串里出现过. [题解] 不再介绍基础知识了,就是裸的模 ...

  6. 【noip】跟着洛谷刷noip题

    传送门 1.铺地毯 d1t1 模拟 //Twenty #include<cstdio> #include<cstdlib> #include<iostream> # ...

  7. 山东省济南市历城第二中学——洛谷图论入门题--基本题必做 图的遍历—3.骑马修栅栏(fence)

    由于我这个破题提交了十四五遍,所以我决定写篇博客来记录一下. 这个题的题目描述是这样的 首先一看这个题我瞬间就想到了一笔画问题(欧拉回路). 对于能够一笔画的图,我们有以下两个定理. 定理1:存在欧拉 ...

  8. 【最大流ISAP】洛谷P3376模板题

    题目描述 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入输出格式 输入格式: 第一行包含四个正整数N.M.S.T,分别表示点的个数.有向边的个数.源点序号.汇点序号. 接下来M行每行 ...

  9. 【后缀数组】洛谷P3809模板题

    题目背景 这是一道模板题. 题目描述 读入一个长度为 n n n 的由大小写英文字母或数字组成的字符串,请把这个字符串的所有非空后缀按字典序从小到大排序,然后按顺序输出后缀的第一个字符在原串中的位置. ...

随机推荐

  1. Python 解码 Unicode 转义字符串 (转)

    其实,这里要讨论的内容是针对 Python2 的,实际上也是 Python2 中让人头疼的编码问题,而 Python3 则好处理得多. 先来看看例子: >>> s = "我 ...

  2. 腾讯云 net.core

    搭建 .NET Core 开发环境 安装 .Net Core 执行代码 任务时间:时间未知 .NET Core 的官方文档很详细,本实验带你建立一个.NET Core 1.1的Web运行环境,更多内容 ...

  3. Atitit. visual studio vs2003 vs2005 vs2008  VS2010 vs2012 vs2015新特性 新功能.doc

    Atitit. visual studio vs2003 vs2005 vs2008  VS2010 vs2012 vs2015新特性 新功能.doc 1.1. Visual Studio2 1.2. ...

  4. MII_GMII_RGMII_RMII_SMII_SSMII_TBI_RTBI

    简介 MII是英文Medium Independent Interface的缩写,翻译成中文是“介质独立接口”,该接口一般应用于以太网硬件平台的MAC层和PHY层之间,MII接口的类型有很多,常用的有 ...

  5. cookie转coontoin

    /// <summary> /// 一个到多个Cookie的字符串添加到CookieCollection集合中[isGood代码] /// </summary> /// < ...

  6. centos7下安装mysql5.7和jdk 1.8

    安装mysql5.7 具体安装过程可参见官网:A Quick Guide to Using the MySQL Yum Repository 进入/usr/local/src文件夹. cd /usr/ ...

  7. Linux下同步模式、异步模式、阻塞调用、非阻塞调用总结

    转自:http://www.360doc.com/content/13/0117/12/5073814_260691714.shtml 同步和异步:与消息的通知机制有关. 本质区别 现实例子 同步模式 ...

  8. linux下调试使用的 一些shell命令

    查看文件日期:strings |grep Build gdb g++ gcc make systemctl gdb: bt s n b 1.firewalld的基本使用 启动: systemctl s ...

  9. boost中全局命名锁的使用

    使用头文件相对位置为:boost/interprocess/sync/named_mutex.hpp 在程序中使用 boost::interprocess::named_mutex g_namedmu ...

  10. jquery中Uncaught TypeError: $(...).ajaxUpload is not a function(…)错误解决方法

    错误原因:该函数不是jquery的核心函数,所以需要外部引入ajaxfileupload.js文件,可能是没有引入,或者引入的js文件互相冲突 解决方法:每次进入一个函数之前打印该函数所有的js文件, ...