Hackerrank Coprime Power Sum
来源:互联网 发布:成绩管理系统c程序软件 编辑:程序博客网 时间:2024/06/05 17:22
Coprime Power Sum传送门
题目大意:计算
如果
对于某一个数
那么容斥的最终形式应该为“总的计算值-一个数的倍数的贡献+两个数的倍数的贡献-…”,(假设
考虑到
#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>using namespace std;typedef long long ll;const int N=110;const int M=200000;const ll mod=1000000007LL;int Q,n,K;ll m,a[N],b[N],C[N][N],inv[N],g[N][200100];ll power(ll a,ll b){ ll ans=1;a%=mod; for (;b;b>>=1,a=(a*a)%mod) if(b&1)ans=(ans*a)%mod; return ans;}void prework(){ C[0][0]=1; for (int i=1;i<N;++i) { C[i][0]=C[i][i]=1; for (int j=1;j<i;++j) C[i][j]=(C[i-1][j-1]+C[i-1][j])%mod; } inv[1]=1; for (int i=2;i<N;++i)inv[i]=(mod-mod/i)%mod*inv[mod%i]%mod;}ll f[N];ll get(ll m,int K){ ll ans=(m%mod+1)*(m%mod+1)%mod; f[0]=m%mod;f[1]=((m%mod*(m%mod+1))%mod*inv[2])%mod; for (int i=2;i<=K;++i) { ans=(ans*(m%mod+1))%mod;f[i]=(ans-1)%mod; for (int j=0;j<i;++j) f[i]=(f[i]-C[i+1][j]*f[j]%mod+mod)%mod; f[i]=f[i]*inv[i+1]%mod; } return f[K];}ll ss(int i,ll j){ if(j<=M&&g[i][j]!=-1)return g[i][j];if(!j)return (K==0); if(!i) { //ll ans=get(j,K);printf("%d %I64d %I64d\n",i,j,ans); if(j<=M)return g[i][j]=get(j,K); else return get(j,K); } if(a[i]>j)return ss(i-1,j); ll ans=(ss(i-1,j)%mod-b[i]*ss(i-1,j/a[i])%mod+mod)%mod; if(j<=M)g[i][j]=ans;//printf("%d %I64d %I64d\n",i,j,ans); return ans;}int main(){ prework(); for(scanf("%d",&Q);Q;--Q) { scanf("%d%d%lld",&n,&K,&m); memset(g,0xff,sizeof(g)); for (int i=1;i<=n;++i)scanf("%lld",a+i); for (int i=1;i<=n;++i)b[i]=power(a[i],K); //for (int i=1;i<=n;++i)printf("%I64d\n",b[i]); printf("%lld\n",ss(n,m)); } return 0;}
总结:
1、容斥的复杂度不一定是
2、代码能力有待加强。。。power里居然忘了先取模了
- Hackerrank Coprime Power Sum
- Hackerrank Coprime Conundrum
- [Hackerrank]Max min sum
- Coprime
- Coprime
- hackerRank
- HackerRank
- HackerRank
- HackerRank
- HackerRank
- HackerRank
- HackerRank
- sum of power
- sum of power
- Problem 16:Power digit sum
- Problem 16:Power digit sum
- PE 16 Power digit sum
- Problem 16 Power digit sum
- LeetCode #315 Count of Smaller Numbers After Self
- Matlab读取带有地理信息的图像
- Android开发笔记—Http通信的基础使用
- c#中XmlTextReader读取xml
- python 安装配置、代码打包发布记录
- Hackerrank Coprime Power Sum
- 康托展开及其逆运算 详解
- Unity&Shader基础篇-“Hello Cg”
- 开始学习swift啦。第一天-01
- jsp、freemarker、json多视图混合解析
- ztree 模拟onclick事件的代码
- 161017
- [简记]内核中申请内存和用户空间中申请内存的函数(kmalloc/vmalloc/malloc)对比
- Linux下Apache负载tomcat集群