博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj 3209 花神的数论题——二进制下的数位dp
阅读量:6679 次
发布时间:2019-06-25

本文共 2096 字,大约阅读时间需要 6 分钟。

题目:

可以枚举 “1的个数是...的数有多少个” ,然后就是用组合数算在多少位里选几个1。

#include
#include
#include
#include
#define ll long longusing namespace std;const int mod=1e7+7,N=70;//(1e7+7)%941==0ll n,dg[N];int jc[N],jcn[N],cnt,ans=1;int pw(int x,int k){ int ret=1;while(k){
if(k&1)ret=(ll)ret*x%mod;x=(ll)x*x%mod;k>>=1;}return ret;}int gcd(int a,int b){
return b?gcd(b,a%b):a;}void exgcd(int a,int b,int &x,int &y){ if(!b){x=1;y=0;return;} exgcd(b,a%b,y,x);y-=a/b*x;}void init(){ jc[0]=1; for(int i=1;i<=62;i++)jc[i]=(ll)jc[i-1]*i%mod; int y;exgcd(jc[62],mod,jcn[62],y); for(int i=61;i>=0;i--)jcn[i]=(ll)jcn[i+1]*(i+1)%mod;}int C(int n,int m){ if(m>n)return 0;if(!m)return 1; return (ll)jc[n]*jcn[m]%mod*jcn[n-m]%mod;}int main(){ init(); scanf("%lld",&n); ll m=n;int p0=0; while(m) { ll k=(m&-m); for(;(1ll<
=0&&k<=i;j--,k++) ans=(ll)ans*pw(i,C(dg[j],i-k))%mod;//模数不是质数,不能对指数取模!!! printf("%d\n",ans); return 0;}
View Code

模数有毒吧怎么不是质数啊!这样都没法对指数取模了!

然后得知是数位dp。同样是枚举 “1的个数是...的数有多少个” ,但因为不是组合数,所以long long就行啦!

dp[ i ][ j ]表示第 i 位是0,后面从0..00到1..11中有多少个数有 j 个1。

#include
#include
#include
#include
#define ll long longusing namespace std;const int N=62,mod=1e7+7;ll n,dp[N+5][N+5];int m,dg[N+5],cnt,ans=1;void init(){ dp[1][0]=1; for(int i=2;i<=m;i++) for(int j=0;j<=i;j++) dp[i][j]+=dp[i-1][j]+dp[i-1][j-1];}int pw(int x,ll k){ if(!x)return 1; int ret=1;while(k){
if(k&1ll)ret=(ll)ret*x%mod;x=(ll)x*x%mod;k>>=1ll;}return ret;}int main(){ scanf("%lld",&n); for(m=0;m<=N&&(1ll<
<=n;m++); init(); ll c=n;int p0=0; while(c) { ll k=(c&-c); for(;(1ll<
=0;i--,k++) { if(!i){ans=(ll)ans*k%mod;break;} for(int j=0;j<=dg[i]-1;j++) ans=(ll)ans*pw(j+k,dp[dg[i]][j])%mod; } printf("%d\n",ans); return 0;}

 

转载于:https://www.cnblogs.com/Narh/p/9399591.html

你可能感兴趣的文章
linux kill 关闭进程命令
查看>>
百度BAE环境下WordPress搭建过程
查看>>
struct ifreq 获取IP 和mac和修改mac
查看>>
twitter storm源码走读之4 -- worker进程中线程的分类及用途
查看>>
apache + tomcat 集群
查看>>
C# ComboBox自动完成功能的示例
查看>>
VC++6.0和VS2005在编写MFC应用程序时,操作方面的差异
查看>>
从tableview中拖动某个精灵
查看>>
AE读取CAD图层包括注记
查看>>
误区30日谈16-20
查看>>
【ASP.NET Web API教程】6.4 模型验证
查看>>
Android 实现书籍翻页效果----完结篇
查看>>
JS实现页面打印
查看>>
广州市例外服饰有限公司_百度百科
查看>>
2014年3月新鲜出炉的最佳 JavaScript 工具库
查看>>
Android特性与系统架构
查看>>
java基础学习总结——Object类
查看>>
(转)2009-05-25 22:12 Outlook2007选择发送帐号
查看>>
WPF合并资源字典
查看>>
SPOJ 3273 - Order statistic set , Treap
查看>>