【题解】「NOIP2024模拟赛24 T3」钙绿

【题解】「NOIP2024模拟赛24 T3」钙绿

https://www.becoder.com.cn/contest/5715/problem/3


Description

给定 n,p,m。对于每个 k=0,1,,m,统计满足下面条件的 n10 进制数:(允许前导零

  1. 各位数之和不超过 k
  2. p 能整除这个数。

数据范围:1n109,1p50,1m1000


Solution

看到对 p 的余数相关,就应该想到循环节一类的。以及鸽巢原理。

O(npm) 的暴力是 navie 的。发现只有 n 太大不可接受。

注意到,在某些位置上的相同数字可能对 w 有着这相同的贡献。

具体的,一个数字在第 x 位上的贡献应该是 10xmodp

我们断言,在 x[1,n] 的范围内,这个贡献一定会出现循环节不超过 p 的混合循环节(若干个循环节和一段长度不超过 p 的乱序序列组成)。

简单说明一下:首先只要存在两个 x,x 使得 10xmodp=10xmodp,那么 x+1,x+1 也一定满足上面这个等式。由鸽巢原理,在长度不超过 p+1 的范围内必出现两个modp 后相等,于是一定存在不超过 p 的循环节。同理,一开始可能存在一段不属于循环节的部分(比如 p=5),这部分长度也一定不超过 p(超过 p 就一定构成循环节了。

于是,一个想法是,把这些贡献相同的位置合并起来处理,这样就把 n 降到了 p

posted @   CloudWings  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示