bzoj1902【Zju2116】 Christopher
题意:http://www.lydsy.com/JudgeOnline/problem.php?id=1902
sol :一眼可以看出此题应用了lucas定理(逃~
将n,m都化为p进制,记为a[],b[]
则对于我们所求的C(n,m)%p,有C(n,m)=∏ (i from 1 to n) (p^i)*(C(a[i],b[i]))%p
若C(n,m)为p的倍数,则存在某一位b[i]>a[i]
即此题要求有多少个<n的数,且其p进制下存在某一位比n的p进制的对应位大
求出a[]后直接数位dp即可
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
const int Mx=;
struct Node
{
int n,g[];
void pre(int k) {n=; g[]=k;}
Node operator*(const int &b)
{
Node c; int y=; c.n=n;
if(!b) { c.pre(); return c; }
for(int i=;i<=n;i++) { y+=g[i]*b; c.g[i]=y%; y/=; }
while(y) { c.g[++c.n]=y%; y/=; }
return c;
}
Node operator+(const Node &b)
{
Node c; int y=,p;
if(n>b.n)
{
c.n=n; for(int i=;i<=n;i++) c.g[i]=g[i]; p=b.n;
for(int i=;i<=b.n;i++) { y+=b.g[i]+c.g[i]; c.g[i]=y%; y/=; }
while(y&&p<n) { y+=c.g[++p]; c.g[p]=y%; y/=; }
}
else
{
c.n=b.n; for(int i=;i<=b.n;i++) c.g[i]=b.g[i]; p=n;
for(int i=;i<=n;i++) { y+=g[i]+c.g[i]; c.g[i]=y%; y/=; }
while(y&&p<b.n) { y+=c.g[++p]; c.g[p]=y%; y/=; }
}
if(y) c.g[++c.n]=y;
return c;
}
int operator/(const int &b)
{
int y=;
for(int i=n;i>=;i--)
{
y=y*+g[i];
if (y<b) g[i]=;
else {g[i]=y/b; y%=b;}
}
while(n>&&!g[n]) n--;
return y;
}
void read()
{
char s[Mx]; scanf("%s",s+); n=strlen(s+);
for(int i=;i<=n;i++) g[n+-i]=s[i]-'';
}
} x,mul,ans,f[Mx];
int p,a[Mx],cnt;
int main()
{
x.read(); scanf("%d",&p);
while(x.n!=||x.g[]) a[++cnt]=x/p;
f[].pre(),mul.pre(),ans.pre();
for(int i=;i<cnt;i++)
{
f[i]=mul*(p--a[i]);
f[i]=f[i]+f[i-]*(a[i]+);
mul=mul*p;
}
for(int i=cnt;i>;i--) ans=ans+f[i-]*a[i];
for(int i=ans.n;i>=;i--) printf("%d",ans.g[i]);
return ;
}
bzoj1902【Zju2116】 Christopher的更多相关文章
- 【NLP】揭秘马尔可夫模型神秘面纱系列文章(一)
初识马尔可夫和马尔可夫链 作者:白宁超 2016年7月10日20:34:20 摘要:最早接触马尔可夫模型的定义源于吴军先生<数学之美>一书,起初觉得深奥难懂且无什么用场.直到学习自然语言处 ...
- 【NLP】揭秘马尔可夫模型神秘面纱系列文章(二)
马尔可夫模型与隐马尔可夫模型 作者:白宁超 2016年7月11日15:31:11 摘要:最早接触马尔可夫模型的定义源于吴军先生<数学之美>一书,起初觉得深奥难懂且无什么用场.直到学习自然语 ...
- 【NLP】揭秘马尔可夫模型神秘面纱系列文章(三)
向前算法解决隐马尔可夫模型似然度问题 作者:白宁超 2016年7月11日22:54:57 摘要:最早接触马尔可夫模型的定义源于吴军先生<数学之美>一书,起初觉得深奥难懂且无什么用场.直到学 ...
- 【NLP】揭秘马尔可夫模型神秘面纱系列文章(四)
维特比算法解决隐马尔可夫模型解码问题(中文句法标注) 作者:白宁超 2016年7月12日14:08:28 摘要:最早接触马尔可夫模型的定义源于吴军先生<数学之美>一书,起初觉得深奥难懂且无 ...
- 【NLP】揭秘马尔可夫模型神秘面纱系列文章(五)
向前向后算法解决隐马尔可夫模型机器学习问题 作者:白宁超 2016年7月12日14:28:10 摘要:最早接触马尔可夫模型的定义源于吴军先生<数学之美>一书,起初觉得深奥难懂且无什么用场. ...
- 【翻译】理解 LSTM 网络
目录 理解 LSTM 网络 递归神经网络 长期依赖性问题 LSTM 网络 LSTM 的核心想法 逐步解析 LSTM 的流程 长短期记忆的变种 结论 鸣谢 本文翻译自 Christopher Olah ...
- 【翻译】理解 LSTM 及其图示
目录 理解 LSTM 及其图示 本文翻译自 Shi Yan 的博文 Understanding LSTM and its diagrams,原文阐释了作者对 Christopher Olah 博文 U ...
- Python高手之路【六】python基础之字符串格式化
Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...
- 【原】谈谈对Objective-C中代理模式的误解
[原]谈谈对Objective-C中代理模式的误解 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 这篇文章主要是对代理模式和委托模式进行了对比,个人认为Objective ...
随机推荐
- mysql查看版本,编码
SELECT * FROM gps_gpsinfo t WHERE t.reportdate < TO_DATE('2019/4/28 10:05:07', 'yyyy-MM-dd hh24:m ...
- JS控制台的使用
1.快捷键F12可直接进入控制台(或者单机右键->检查)用于bug调试 2.控制台如图: Elements:表示所有的js元素 Console:常用的有如下几个功能: ①console.log: ...
- 济南NOIP冬令营 选拔(select)
选拔(select) Time Limit:2000ms Memory Limit:128MB 题目描述 LYK对n个女生有好感.第i个女生的身高为ai. LYK要在这些女生中选拔出一个女生来作为 ...
- 52shaidan.net
52shaidan.net 52gendan.net 朋友的域名
- 整合mybatis和spring时 Error creating bean with name 'sqlSessionFactory' defined in class path resource
今天在整合mybatis和spring的时候出的错 报错如下 Exception in thread "main" org.springframework.beans.factor ...
- Mybatis中的增删改查
相比jdbc mybatis在操作数据库方面比jdbc节省了大量的代码,及大量的代码冗余.使得操作起来更加简洁. 在Mapper中分别有着 select,insert, update,delete的这 ...
- tcl之变量-数组array
- javascript简易日历制作
学习记录 01.练习数组的用法 02.理解this.index的用法 03.绑定事件深入练习理解 html代码 <div id="date"> <ul id=&q ...
- 基于neo4j图数据库,实现人口关系大图的基本思路及实现方案。
近期由于工作需要,需要做一个人口关系大图的存储及检索方案,我们主要的数据对象有:人口(年龄,身份证号码,性别..) :学校信息(学校地址,学校名称,学校级别,学校下边的年级班级..):就职信息(公司名 ...
- 动态规划:最长上升子序列之基础(经典算法 n^2)
解题心得: 1.注意动态转移方程式,d[j]+1>d[i]>?d[i]=d[j]+1:d[i] 2.动态规划的基本思想:将大的问题化为小的,再逐步扩大得到答案,但是小问题的基本性质要和大的 ...