专栏文章

题解:P13929 [蓝桥杯 2022 省 Java B] 山

P13929题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mio01tbw
此快照首次捕获于
2025/12/02 11:09
3 个月前
此快照最后确认于
2025/12/02 11:09
3 个月前
查看原文

前话

关于这种直接提交答案的题,如果大家在考试中,不会的话,那么就可以先打表把所有的可能(这题是大概 10910^9)模拟一遍。因为咱们可以等呀,考试几个小时几千秒,足够运行完 101010^{10}(保守估计)的次数了。这题就可以大模拟运行他几分钟,算出答案 31383138 就可以提交了,提交的时候,那个程序就是 O(1)O(1) 的,不用担心超时。

题目分析

废话不多说。
分析一下要求:

回文

既然要求回文,令数位为 kk,那么我们只需要考虑前一半就行了(如果 kk 是奇数,那么最中间的一位也需要考虑)。

构成数字

那么第一位不能是 00

不递减且可以重复数字

因为第 11 为非零,而且后面的都不能比 11 小,所以我们永远用不到 00 这个数字,只需要考虑其他的九个数字就行了。
强调一下,我们这里说的只是在上面说到需要考虑的,后面回文的部分就不考虑了。
要求不递减而且可以重复数字,那么根据一个公式:
如果说一共有 nn 个可选项,而且可以重复选,一共选 kk 个,那么总排列组合数量就是 Ckn+k1C^{n+k-1}_{k}

为什么?

kk 个待选的用圆点表示,然后用 n1n-1 个线把这些圆点分成 nn 组。第 ii 组中圆点的个数表示了第 ii 个待选项的选择次数。
那么先不区分圆点和线,那么排列方式就是一共有 (n+k1)!(n+k-1)!
然后去掉重复的功能,就是有 (n+k1)!k!×(n1)!\frac{(n+k-1)!}{k!\times (n-1)!} 种。

解法

我们这里只需要对于十位数和四位数特殊讨论即可。(因为这俩是不满的,有一部分在区间外)
四位数:因为下限是 20222022,所以第一位数不小于 22,可选项就是从 2299 了。因为后面不可能选到 00,所以只考虑第一位就涵括了所有区间外的可能。带入上面公式 n=8,k=2n=8,k=2 算得 3636
十位数:从 20000000002000000000 到区间末尾 20222220222022222022,可以证明不存在。因为怎么找都会有 00 了。
1000000000100000000019999999991999999999 这些,排除第一位为 11 后,中间四位就带入 n=9,k=4n=9,k=4 即可。得到 495495
其他的数位的话,求一下 i=59(8+i)!i!×8!\sum^{9}_{i=5} \frac {(8+i)!}{i!\times 8!} 即可。求得 26072607(这个问题可以抛给 c++)。
最后把答案加起来:36+495+2607=313836+495+2607=3138

答案

31383138

评论

0 条评论,欢迎与作者交流。

正在加载评论...