当前位置: 首页 > news >正文

CF621E-Wet Shark and Blocks

CF621E-Wet Shark and Blocks

题目大意

你现在一共有b bb堆一模一样的数字,每堆数字中有n nn1 − 9 1-919的一位数。你现在可以从每一堆里恰好选一个数,将这些数从左到右拼成一个大数。将这个拼成的大数对x xx取模,问你最后结果是k kk的取法有多少,取法数量对1 e 9 + 7 1e9+71e9+7取模。

题解

可以发现,设d p [ m ] [ i ] dp[m][i]dp[m][i]为前m mm堆余数为i ii的种数,有如下递推式d p [ m + 1 ] [ ( i ∗ 10 + v a l ) % x ] + = d p [ m ] [ i ] dp[m+1][(i*10+val) \% x]+=dp[m][i]dp[m+1][(i10+val)%x]+=dp[m][i]v a l valval为下一堆中取的数字。可以发现递推式只和相邻两堆有关。所以可以简化成d p [ i ] [ ( i ∗ 10 + v a l ) % x ] = Σ i [ n u m [ i ] = = v a l ] dp[i][(i*10+val) \% x]=\Sigma_i [num[i]==val]dp[i][(i10+val)%x]=Σi[num[i]==val],表示从余数i ii转移到下一堆余数( i ∗ 10 + v a l ) % x (i*10+val) \% x(i10+val)%x的种数。接下来就是对这个矩阵进行矩阵快速幂加速得到结果。

#include<bits/stdc++.h>#defineiosios::sync_with_stdio(false);cin.tie(0);cout.tie(0);#defineendl'\n'usingnamespacestd;#defineintlonglongconstintmod=1e9+7;structMatrix{intn,m;vector<vector<int>>a;Matrix(int_n=0,int_m=0):n(_n),m(_m){a.resize(n,vector<int>(m,0));}Matrixoperator*(constMatrix&b)const{if(m!=b.n)throw"Matrix dimension error";Matrixres(n,b.m);for(inti=0;i<n;i++){for(intj=0;j<b.m;j++){for(intk=0;k<m;k++){res.a[i][j]=(res.a[i][j]+1LL*a[i][k]*b.a[k][j])%mod;}}}returnres;}Matrixpow(longlongk)const{if(n!=m)throw"Matrix must be square";Matrixres(n,n),base=*this;for(inti=0;i<n;i++)res.a[i][i]=1;while(k>0){if(k&1)res=res*base;base=base*base;k>>=1;}returnres;}};inlinevoidsolve(){intn,b,k,x;cin>>n>>b>>k>>x;MatrixA(x,x);for(inti=0;i<n;i++){intval;cin>>val;for(intj=0;j<x;j++){intnext=(j*10+val)%x;A.a[j][next]=(A.a[j][next]+1)%mod;}}Matrix Ab=A.pow(b);cout<<Ab.a[0][k]<<endl;}signedmain(){ios;intT=1;// cin >> T;while(T--)solve();return0;}
http://www.jsqmd.com/news/280626/

相关文章:

  • EI会议检索征稿!!!2026年智能感知与自主控制国际学术会议(IPAC 2026)
  • [C] String Literal Concatenation, why does C support this?
  • 【计算机毕业设计案例】基于springboot+vue的javaweb宝贝回家走失儿童报备基于springboot的走失儿童认领与登记系统(程序+文档+讲解+定制)
  • MC-SMoE: MoE 模型压缩方案
  • MCP学习笔记
  • HC-SMoE: MoE Expert 合并压缩方案解读
  • UE5 C++(43):用 timeLine 实现开关门
  • AI大模型开发入门到精通:一本助你转型的必备书籍
  • 基于SpringBoot+Vue校园跑腿网站的设计与实现
  • 导师严选2026 TOP10 AI论文工具:专科生毕业论文写作全测评
  • IPO投资策略:如何评估新上市公司
  • 基于SpringBoot+Vue校园足球俱乐部管理系统的设计与实现
  • Linux OOM killer 评分系统的演变及分数优先级详解
  • 降AI率必备!6款免费工具亲测,学生党轻松降80%,论文AI检测一次过
  • AI Agent实战指南:程序员必学大模型应用,从概念到商业布局,值得收藏
  • 基于SpringBoot+Vue学校物资采购系统的设计与实现
  • Balanced 01-String
  • AI大模型学习全攻略:零基础入门、35岁转行可行性与就业前景
  • AI率过高别慌!这6个免费降AI工具亲测有效,学生党拯救论文指南
  • D6 707.设计链表
  • 基于SpringBoot+Vue一鹿租车公司车辆管理系统的设计与实现
  • 毕业党救星!5个降AI率工具大公开,亲测好用,能帮你把AI率降低80%以上
  • 实验室智能监控系统实战源码-基于YOLOv8的实时目标检测与PyQt5可视化界面
  • 如何在idea中创建mavenweb项目
  • AI率过高有救了!这5个工具实测能打,可将论文AIGC痕迹大幅降低80%
  • Java毕设项目推荐-基于springboot+vue的全国走失儿童认领与登记系统【附源码+文档,调试定制服务】
  • 开箱即用的番茄叶片病害识别平台|YOLOv8+PyQt5实战指南
  • 工控人注意了:Windows近期系统更新会导致你电脑的西门子软件TIA Portal 无法使用,你中招了吗?
  • 计算机Java毕设实战-基于springboot的走失儿童认领与登记系统基于springboot+vue的javaweb宝贝回家走失儿童报备【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 学生党必看:3步轻松改写AI文献综述,教你如何用AI把AI率从80%降到5%!