<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>数学 on 分而治之</title>
        <link>https://www.pythoner.work/categories/%E6%95%B0%E5%AD%A6/</link>
        <description>Recent content in 数学 on 分而治之</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <copyright>Divide and Conquer. All rights reserved.</copyright>
        <lastBuildDate>Sun, 24 Aug 2025 13:07:00 +0800</lastBuildDate><atom:link href="https://www.pythoner.work/categories/%E6%95%B0%E5%AD%A6/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>用数学期望计算区间内整数各数位的和的和</title>
        <link>https://www.pythoner.work/post/expectation-calculate-digit-sum/</link>
        <pubDate>Sun, 24 Aug 2025 13:07:00 +0800</pubDate>
        
        <guid>https://www.pythoner.work/post/expectation-calculate-digit-sum/</guid>
        <description>&lt;h2 id=&#34;问题&#34;&gt;问题
&lt;/h2&gt;&lt;p&gt;$[0, n)$ 中的数的数位和的和是多少？&lt;/p&gt;
&lt;p&gt;保证：$n = p \times 10^q$，$p, q$ 为正整数。即 $n$ 是 $x999\dots$ 的形式。&lt;/p&gt;
&lt;p&gt;例如：$[0, 20)$ 中数的数位和的和是 $0 + 1 + 2 + 3 + \dots + 9 + (1 + 0) + (1 + 1) + (1 + 2) + \dots + (1 + 9) = 100$。&lt;/p&gt;
&lt;h2 id=&#34;用数学期望算&#34;&gt;用数学期望算
&lt;/h2&gt;&lt;p&gt;将 $n$ 这个数的首位和其他位分开，记 $n$ 的位数为 $l$。&lt;/p&gt;
&lt;p&gt;假设所有在原区间内地数都是 $l$ 位的，若不足 $l$ 位的数，在前面补 $0$。这一操作并不影响结果。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://www.pythoner.work/post/expectation-calculate-digit-sum/numbers.png&#34;
	width=&#34;281&#34;
	height=&#34;599&#34;
	srcset=&#34;https://www.pythoner.work/post/expectation-calculate-digit-sum/numbers_hu_d22cd3ef43541630.png 480w, https://www.pythoner.work/post/expectation-calculate-digit-sum/numbers_hu_d0cf54b04f63fc7a.png 1024w&#34;
	loading=&#34;lazy&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;46&#34;
		data-flex-basis=&#34;112px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;先讨论除首位外的其他位，观察上图我们发现，这些位的值在 $0$ 到 $9$ 之间&lt;strong&gt;均匀地&lt;/strong&gt;分布，所以可以计算每一位的数学期望为 $4.5$。又因为统计数位和的区间包括了 $n$ 个数，总共存在 $n \times (l - 1)$ 个数位，所以这一部分的数位和为 $4.5 \times n \times (l - 1)$。&lt;/p&gt;
&lt;p&gt;再讨论首位，设首位值为 $d_1$，相似地，可以证明第一位的值在 $0$ 到 $d_1$ 之间均匀分布，所以首位数学期望为 $\frac{d_1}{2}$。因此首位数位和为 $\frac{d_1}{2} \times n$。&lt;/p&gt;
&lt;p&gt;上面两式相加即为 $[0, n)$ 中数的数位和的和。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>波兰表示法与逆波兰表示法</title>
        <link>https://www.pythoner.work/post/polish-notation/</link>
        <pubDate>Sat, 10 Aug 2024 10:31:00 +0800</pubDate>
        
        <guid>https://www.pythoner.work/post/polish-notation/</guid>
        <description>&lt;h2 id=&#34;算术形式&#34;&gt;算术形式
&lt;/h2&gt;&lt;p&gt;表达“三与四相加”时，前缀记法（即波兰表达式）写作 &lt;code&gt;+34&lt;/code&gt;，中缀记法写作 &lt;code&gt;3+4&lt;/code&gt;，后缀记法（即逆波兰表达式）写作 &lt;code&gt;34+&lt;/code&gt;。
中缀表达式 &lt;code&gt;(1-2)*3&lt;/code&gt; 的前缀记法为 &lt;code&gt;*-123&lt;/code&gt;，后缀记法为 &lt;code&gt;12-3*&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;请注意，逆波兰表达式&lt;strong&gt;不是&lt;/strong&gt;把波兰表达式反转。&lt;/p&gt;
&lt;p&gt;运算波兰表达式时，无需记住运算的层次，只需要直接寻找第一个运算的操作符。以二元运算为例，从左至右读入表达式，遇到一个操作符后跟随两个操作数时，则计算之，然后将结果作为操作数替换这个操作符和两个操作数；重复此步骤，直至所有操作符处理完毕。&lt;/p&gt;
&lt;p&gt;逆波兰表达式的解释器一般是基于堆栈的。解释过程一般是：操作数入栈；遇到操作符时，操作数出栈，求值，将结果入栈；当一遍后，栈顶就是表达式的值。&lt;/p&gt;
&lt;p&gt;由于简单运算符都是二元的，所以波兰表达式与逆波兰表达式不需要括号。&lt;/p&gt;
&lt;h2 id=&#34;例子&#34;&gt;例子
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;前缀表达式&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - / * + 5 7 3 6 4
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;= - / * 12    3 6 4
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;= - / 36        6 4
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;= - 6             4
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;= 2
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  + - 6 * 4 5 2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;= + - 6 20    2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;= + -14       2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;= -12
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;后缀表达式&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  5 7 + 3 * 6 / 4 -
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;= 12    3 * 6 / 4 -
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;= 36        6 / 4 -
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;= 6             4 -
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;= 2
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  6 4 5 * - 2 +
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;= 6 20    - 2 +
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;= -14       2 +
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;= -12
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
        </item>
        <item>
        <title>组合数学 - 从n个球中取m个</title>
        <link>https://www.pythoner.work/post/counting-balls/</link>
        <pubDate>Sun, 10 Jul 2022 11:52:00 +0800</pubDate>
        
        <guid>https://www.pythoner.work/post/counting-balls/</guid>
        <description>&lt;blockquote&gt;
&lt;p&gt;UPD: 2025-07-13&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;不放回无重排列组合&#34;&gt;不放回（无重排列组合）
&lt;/h2&gt;&lt;h3 id=&#34;有序&#34;&gt;有序
&lt;/h3&gt;&lt;p&gt;$$P_n^m$$&lt;/p&gt;
&lt;h3 id=&#34;无序&#34;&gt;无序
&lt;/h3&gt;&lt;p&gt;$$C_n^m$$&lt;/p&gt;
&lt;h2 id=&#34;放回可重排列组合&#34;&gt;放回（可重排列组合）
&lt;/h2&gt;&lt;h3 id=&#34;有序-1&#34;&gt;有序
&lt;/h3&gt;&lt;p&gt;一个一个取，每步可以有$n$种选择，乘法原理：
$$n \times n \times n \times&amp;hellip;\times n\
= n^m$$&lt;/p&gt;
&lt;h3 id=&#34;无序-1&#34;&gt;无序
&lt;/h3&gt;&lt;p&gt;可重组合，可记作：
$\bar{C}_n^m$（c bar n m)，
$H_n^m$。&lt;/p&gt;
&lt;p&gt;重点：隔板法&lt;/p&gt;
&lt;p&gt;从$n$元集中可重复的选取$m$个元素，则方程$x_1 + x_2 + x_3 + &amp;hellip; + x_n = m$的非负整数解的个数就是可以选的方式的总个数。那么我们可以把这个问题看成在$m$个元素中插入$n-1$个分隔符，每段中是一种元素，就是在$n+m-1$个位置中选取$n-1$个放分隔符，也是$n+m-1$个位置中选取$m$个不放分隔符，就可以用无重组合的方式表示可重组合：
$$C_{n+m-1}^{m}$$&lt;/p&gt;
&lt;h3 id=&#34;无序每种至少选一个&#34;&gt;无序，每种至少选一个
&lt;/h3&gt;&lt;p&gt;可重组合的变形，仍使用隔板法。&lt;/p&gt;
&lt;p&gt;这次每种至少选一个的使得两个隔板不能放在一起，位置数减小到了$m - 1$，所以答案就是：
$$C_{m-1}^{n-1}$$&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
