news 2026/5/2 2:44:02

CF621E-Wet Shark and Blocks

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 4:41:01

【计算机毕业设计案例】基于springboot+vue的javaweb宝贝回家走失儿童报备基于springboot的走失儿童认领与登记系统(程序+文档+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/5/1 17:04:32

Java计算机毕设之基于springboot+vue的走失儿童认领与登记系统基于SpringBoot的宝贝回家走失儿童报备系统(完整前后端代码+说明文档+LW,调试定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/5/1 14:11:29

Java毕设选题推荐:基于springboot的走失儿童认领与登记系统【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/5/1 4:21:47

实验室智能监控系统实战源码-基于YOLOv8的实时目标检测与PyQt5可视化界面

实验室智能监控系统实战源码-基于YOLOv8的实时目标检测与PyQt5可视化界面 前言 实验室安全管理一直是科研机构和教育单位的重点。传统依赖人工巡查的方式存在效率低、易遗漏、成本高等问题&#xff0c;难以满足全天候监控需求。随着计算机视觉技术的发展&#xff0c;基于深度…

作者头像 李华