程序员老鬼

公司要裁员30%,我主动申请被裁,被拒绝了。后来才知道,公司压根就没想给赔偿,各种骚操作,总有办法让你主动走。

今天我又看到一条网友爆料,事情是这样的,有个程序员朋友在公司听说要裁员30%,于是,他脑袋一热,主动向公司申请被裁,想着这样至少能拿点赔偿金,大家也能体面地分手。可是……公司竟然拒绝了!

Image

后来他才知道,原来公司压根就没打算赔偿,所有的裁员操作都是为了逼员工主动离职。

明面上不裁人,背地里却搞各种手段,让你觉得自己呆不下去了。

比如,先给你安排一些不合适的工作,或者是故意调岗,让你在工作中感受到前所未有的压力,然后用“离职自己主动申请”这种方式来甩锅。

说实话,我觉得这不光是个别公司才有的套路,很多地方为了避免裁员赔偿,都会使点“骚操作”,让你自己选择离开。真的,做人还是得精明一点,主动申请?未必是最好的选择。

总的来说,大家在职场上还是要多留个心眼,有时候的“主动”可能并不是你想的那样简单。【备注:文末可领最新资料】。

算法题:阶乘函数后 K 个零

今天来聊聊一个算法题,听起来简单,做起来却有点“套路”的问题:阶乘函数后 K 个零。

首先,阶乘大家都不陌生吧?比如 5! 就是 5 × 4 × 3 × 2 × 1。阶乘的数字在计算过程中是迅速增长的。所以问题来了,为什么我们要关心阶乘后的零?

其实,这个问题的本质是:一个阶乘的结果中,后面有多少个 10。每个 10 都是由 2 和 5 组成的。在阶乘的计算中,2 的出现频率要远远高于 5,所以问题变成了:一个阶乘中包含多少个 5,就可以确定其末尾有多少个零。

比如,5! 的计算是:5 × 4 × 3 × 2 × 1 = 120,结果的末尾有 1 个零。为什么呢?因为 120 可以分解成 2 × 2 × 2 × 3 × 5,包含一个 5 和若干个 2。所以,它的末尾就会有一个零。

那么,如何快速找出一个阶乘的尾零个数呢?

如果我们从 1 开始计算每个阶乘,直接算到 N 的阶乘,显然是效率低下的。我们不如换个角度:对于一个数 N 的阶乘,所有能整除 5 的数都能贡献一个零。比如,5, 10, 15, 20 都能贡献一个零。

我们就可以通过以下步骤来解决这个问题:

  1. 首先,找出 N 能整除多少个 5。即,N ÷ 5。
  2. 然后,考虑更高的倍数,比如 25,30 等等。25 能贡献两个 5,因为 25 = 5 × 5,所以我们需要计算 N ÷ 25。
  3. 继续往下算,直到 N ÷ 5^k 小于 1 为止。

通过这种方式,我们能迅速统计出阶乘结果中有多少个零。

代码实现:

public class FactorialTrailingZeroes {

    // 计算 n! 后面的零的个数
    public static int trailingZeroes(int n) {
        int count = 0;
        // 每次除以 5
        while (n >= 5) {
            n /= 5;  // 先除以 5
            count += n;  // 累加结果
        }
        return count;
    }

    public static void main(String[] args) {
        int n = 100;
        System.out.println("100! 后的零的个数是: " + trailingZeroes(n));
    }
}

解释一下:

  1. 我们定义了 trailingZeroes 方法,接收一个整数 n,表示我们要计算的是 n! 后面有多少个零。
  2. 在 while (n >= 5) 这个循环中,我们一直将 n 除以 5,直到 n 小于 5。
  3. 每次将 n 除以 5 后,我们就把 n 加到 count 中。因为 n 除以 5 后,意味着我们找到了多少个能被 5 整除的数。
  4. 循环结束后,count 就是阶乘结果的尾零个数。

示例:

比如,输入 100,计算 100! 后面的零的个数:

  • 100 ÷ 5 = 20,表示 100 以内有 20 个数能被 5 整除(包括 5, 10, 15, ..., 100)。
  • 100 ÷ 25 = 4,表示 100 以内有 4 个数能被 25 整除(25, 50, 75, 100)。每个 25 都能提供额外的一个零。
  • 100 ÷ 125 = 0,表示 100 以内没有数能被 125 整除。

因此,100! 后面有 20 + 4 = 24 个零。

-END-

ok,今天先说到这,老规矩,给大家分享一份不错的副业资料,感兴趣的同学找我领取。

Image

以上,就是今天的分享了,看完文章记得右下角给何老师点赞,也欢迎在评论区写下你的留言。