题意: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 ;
}

最新文章

  1. Distribution2:Distribution Writer
  2. 转载:ORA-01438: 值大于为此列指定的允许精度
  3. ASP.NET Core 1.0 中的依赖项管理
  4. 手动给控制器添加xib
  5. Bluez alpha版震撼发布!
  6. Valgrind简单用法
  7. 使用Rxjava缓存请求
  8. bzoj 1026 [SCOI2009]windy数 数位dp
  9. 史上最全的ASP.NET MVC路由配置,以后RouteConfig再弄不懂神仙都难救你啦~
  10. [置顶] 如何访问web文件夹之外的文件
  11. [LeetCode#263]Factorial Trailing Zeroes
  12. &lt;input type=&quot;text&quot;&gt;文本输人框
  13. C#第六天
  14. python的约束库constraint解决《2018刑侦科题目》
  15. Linux内核入门到放弃-网络-《深入Linux内核架构》笔记
  16. LAYUI layedit 富文本框内容的取值
  17. 刘志梅201771010115.《面向对象程序设计(java)》第十四周学习总结
  18. dentry path_lookat dput
  19. day20 Python 装饰器
  20. bzoj 3224: Tyvj 1728 普通平衡树 &amp;&amp; loj 104 普通平衡树 (splay树)

热门文章

  1. 【luogu P5022 旅行】 题解
  2. 使用Xcode过程中遇到的问题
  3. WinSCP使用与linux命令(小部分命令)
  4. Math类小结
  5. C/C++程序基础 (八)数据结构
  6. PowerDesigner导入Excel模板生成实体
  7. 【JS】JS实现时间戳转换成普通时间
  8. 理解 Objective-c &quot;属性&quot;
  9. Linux usb gadget框架概述
  10. C++构造函数使用的多种方法