n++,n--与++n,--n的区别

博客介绍了n++和++n在使用上的区别,n++是先用再加,而++n是先加再用,这是编程中关于自增运算符使用的关键信息。

n++是先用再加。

++n是先加再用。

```markdown 你问得很好:**为什么是 `(N - 1 + K - 2)`?** 我们来一步一步解释这个表达式的来源。 --- ### 目标 我们要计算的是: $$ \left\lceil \frac{N - 1}{K - 1} \right\rceil $$ 这是因为在插排问题中,初始有 1 个插座,每个插排净增加 $ K - 1 $ 个可用口(因为自己要插上去,占一个位置),所以需要满足: $$ 1 + x(K - 1) \geq N \quad \Rightarrow \quad x \geq \frac{N - 1}{K - 1} $$ 取上整得最小插排数。 --- ### 向上取整的整数技巧 对于正整数 $ a $ 和 $ b $,有: $$ \left\lceil \frac{a}{b} \right\rceil = \frac{a + b - 1}{b} \quad \text{(整数除法向下取整时成立)} $$ 应用到这里: - $ a = N - 1 $ - $ b = K - 1 $ 所以: $$ x = \left\lceil \frac{N - 1}{K - 1} \right\rceil = \frac{(N - 1) + (K - 1) - 1}{K - 1} = \frac{N - 1 + K - 2}{K - 1} = \frac{N + K - 3}{K - 1} $$ 👉 因此,`N - 1 + K - 2` 就是分子:$ (N - 1) + (K - 1) - 1 $ --- ### 举个例子 设 $ N = 7, K = 3 $: - $ \frac{N - 1}{K - 1} = \frac{6}{2} = 3 $,已经是整数 → 上取整为 3 - 公式:$ (6 + 2 - 1)/2 = 7/2 = 3 $(整数除法) 写成代码就是: ```c (N - 1 + K - 2) / (K - 1) ``` 等价于: ```c (6 + 1) / 2 = 7 / 2 = 3 (在整数除法中) ``` ✅ 完全正确! --- ### 总结 `N - 1 + K - 2` 是为了实现 **向上取整公式**: $$ \left\lceil \frac{N - 1}{K - 1} \right\rceil = \frac{(N - 1) + (K - 1) - 1}{K - 1} $$ 它不是随意加减,而是数学推导的结果。 ### 知识点 - **向上取整公式**:$ \left\lceil \frac{a}{b} \right\rceil = (a + b - 1) / b $(适用于正整数)。 - **整数除法特性**:C 语言中 `/` 向零截断,故需转换为加法实现上取整。 - **代数变换能力**:将数学表达式正确转化为无浮点的整数运算。 ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值