#组合计数,动态规划#JZOJ 1523 洛谷 2481 代码拍卖会

2024-02-11 05:18

本文主要是介绍#组合计数,动态规划#JZOJ 1523 洛谷 2481 代码拍卖会,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目

问多少个 n n n位数满足数位从左到右数字不下降且为 P P P的倍数


分析

慢慢填坑吧


代码

#include <cstdio>
#define rr register
using namespace std;
typedef long long ll;
const ll mod=999911659;
ll n,p,rep,cnt[501],pos[501],dp[501][501][11],inv[11],c[501][11],reco,len,ans;
signed main(){scanf("%lld%lld",&n,&p); rr ll sum=0;if (n<=p){for (rr int i=1;i<=n;++i) ++cnt[sum=(sum*10+1)%p];rep=sum;}else{for (rr int i=1;i<=p+1;++i){if (cnt[sum=(sum*10+1)%p]){ reco=pos[sum],len=i-pos[sum];break; }++cnt[sum],pos[sum]=i;}for (rr int i=0;i<p;++i)if (cnt[i]&&pos[i]>=reco){cnt[i]=(n-reco+1)/len;if (pos[i]-reco+1<=(n-reco+1)%len) ++cnt[i];if ((pos[i]-reco+1)%len==(n-reco+1)%len) rep=i;}}inv[0]=inv[1]=1;for (rr int i=2;i<9;++i) inv[i]=inv[mod%i]*(mod-mod/i)%mod;for (rr int i=0;i<p;++i){c[i][0]=1;if (cnt[i]) for (rr int j=1;j<9;++j)c[i][j]=cnt[i]*c[i][j-1]%mod*inv[j]%mod,cnt[i]=(cnt[i]+1)%mod;}dp[0][rep][0]=1;for (rr int i=0;i<p;++i)for (rr int j=0;j<p;++j)for (rr int k=0;k<9;++k)for (rr int h=0;h<=k;++h)(dp[i+1][j][k]+=dp[i][((j-(i*h)%p)+p)%p][k-h]*c[i][h]%mod)%=mod;for (rr int i=0;i<9;++i) (ans+=dp[p][0][i])%=mod;return !printf("%lld",ans);
} 

这篇关于#组合计数,动态规划#JZOJ 1523 洛谷 2481 代码拍卖会的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/698927

相关文章

Java数组动态扩容的实现示例

《Java数组动态扩容的实现示例》本文主要介绍了Java数组动态扩容的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1 问题2 方法3 结语1 问题实现动态的给数组添加元素效果,实现对数组扩容,原始数组使用静态分配

JAVA项目swing转javafx语法规则以及示例代码

《JAVA项目swing转javafx语法规则以及示例代码》:本文主要介绍JAVA项目swing转javafx语法规则以及示例代码的相关资料,文中详细讲解了主类继承、窗口创建、布局管理、控件替换、... 目录最常用的“一行换一行”速查表(直接全局替换)实际转换示例(JFramejs → JavaFX)迁移建

Go异常处理、泛型和文件操作实例代码

《Go异常处理、泛型和文件操作实例代码》Go语言的异常处理机制与传统的面向对象语言(如Java、C#)所使用的try-catch结构有所不同,它采用了自己独特的设计理念和方法,:本文主要介绍Go异... 目录一:异常处理常见的异常处理向上抛中断程序恢复程序二:泛型泛型函数泛型结构体泛型切片泛型 map三:文

MyBatis中的两种参数传递类型详解(示例代码)

《MyBatis中的两种参数传递类型详解(示例代码)》文章介绍了MyBatis中传递多个参数的两种方式,使用Map和使用@Param注解或封装POJO,Map方式适用于动态、不固定的参数,但可读性和安... 目录✅ android方式一:使用Map<String, Object>✅ 方式二:使用@Param

SpringBoot实现图形验证码的示例代码

《SpringBoot实现图形验证码的示例代码》验证码的实现方式有很多,可以由前端实现,也可以由后端进行实现,也有很多的插件和工具包可以使用,在这里,我们使用Hutool提供的小工具实现,本文介绍Sp... 目录项目创建前端代码实现约定前后端交互接口需求分析接口定义Hutool工具实现服务器端代码引入依赖获

MyBatis-Plus使用动态表名分表查询的实现

《MyBatis-Plus使用动态表名分表查询的实现》本文主要介绍了MyBatis-Plus使用动态表名分表查询,主要是动态修改表名的几种常见场景,文中通过示例代码介绍的非常详细,对大家的学习或者工作... 目录1. 引入依赖2. myBATis-plus配置3. TenantContext 类:租户上下文

利用Python在万圣节实现比心弹窗告白代码

《利用Python在万圣节实现比心弹窗告白代码》:本文主要介绍关于利用Python在万圣节实现比心弹窗告白代码的相关资料,每个弹窗会显示一条温馨提示,程序通过参数方程绘制爱心形状,并使用多线程技术... 目录前言效果预览要点1. 爱心曲线方程2. 显示温馨弹窗函数(详细拆解)2.1 函数定义和延迟机制2.2

Springmvc常用的注解代码示例

《Springmvc常用的注解代码示例》本文介绍了SpringMVC中常用的控制器和请求映射注解,包括@Controller、@RequestMapping等,以及请求参数绑定注解,如@Request... 目录一、控制器与请求映射注解二、请求参数绑定注解三、其他常用注解(扩展)四、注解使用注意事项一、控制

Java中的随机数生成案例从范围字符串到动态区间应用

《Java中的随机数生成案例从范围字符串到动态区间应用》本文介绍了在Java中生成随机数的多种方法,并通过两个案例解析如何根据业务需求生成特定范围的随机数,本文通过两个实际案例详细介绍如何在java中... 目录Java中的随机数生成:从范围字符串到动态区间应用引言目录1. Java中的随机数生成基础基本随

C++简单日志系统实现代码示例

《C++简单日志系统实现代码示例》日志系统是成熟软件中的一个重要组成部分,其记录软件的使用和运行行为,方便事后进行故障分析、数据统计等,:本文主要介绍C++简单日志系统实现的相关资料,文中通过代码... 目录前言Util.hppLevel.hppLogMsg.hppFormat.hppSink.hppBuf