知乎高问:小红书高管为何不管HR卡年龄这件事?
刚看到个贴子,说网友吐槽小红书高管不管HR卡年龄这事。
意思是一些岗位35岁以上简历直接被筛掉,网友气得不行,觉得平台倡导“多元包容”,结果自己却搞年龄歧视。
我觉得这事吧,确实挺讽刺的。很多平台都是主打“生活多样性”“每个人都值得被看见”,可职场上连“年龄”都看不见,这就很割裂。
网友的情绪不是没道理,但也别太理想化——很多公司嘴上说开放,其实本质还是算“性价比”。年轻人便宜、好用、抗压,这就是商业逻辑。
不过话说回来,企业有商业考量,社会也该有底线。卡年龄不只是歧视,更是浪费人才。35岁正是一个人经验最成熟、稳定性最高的时候。真要发展长远,应该看能力而不是身份证。【备注:文末可领最新资料】
算法题:好因子的最大数目
昨晚十一点多我在公司楼下便利店买酸奶,排队的时候群里有人问“东哥,那个‘好因子的最大数目’咋做?”我当时手机差点掉地上…这题其实不难,就是拎清楚一个点:你有 p 个“质因子名额”(准确说是 prime factors 的个数),要把它们分给若干个质数的指数,让构造出来的那个数的“好因子”数量最大。好因子是指只含给定质数集合的因子,所以数量=把指数各自+1再相乘,比如 n=2^a·3^b·5^c,则好因子数=(a+1)(b+1)(c+1)。问题就变成:把 p 拆成若干正整数 a,b,c,… 且 a+b+c+…=p,使 (a+1)(b+1)(c+1)… 最大。
我回到工位泡了杯茶想了下,嗯,这不就是经典“整数拆分乘积最大化”的变体嘛:把 x=a+1、b+1… 那总和就变成 p+k(k 是份数),不过等价推出来还是那个熟悉的结论——尽量用 3,其次用 2。直觉上把大块切成等长段乘积最大;数学上用凸性/Jensen 或把 4 拆成 2×2、把 5 拆成 3×2 就能说服自己。落到实现上就是:p 拆成尽量多的 3,若余 1,就把“3+1”换成“2+2”(也就是乘以 4),若余 2,就乘一个 2。题目通常还要求取模 1e9+7,再加上 p 可能很大,用快速幂就行。
有几个边界别忘:p<=3 时,答案就是 p 本身。因为 p=1 ⇒(1);p=2 ⇒2;p=3 ⇒3,强行拆反而变小。另外大数取模里乘法要用 long。
我把思路跟小李说完他“哦~”了一声就去写了,我顺手把 Java 代码丢这儿,你们可以直接跑:
import java.io.*;
import java.util.*;
publicclassSolution{
staticfinallong MOD = 1_000_000_007L;
publicintmaxNiceDivisors(int p){
if (p <= 3) return p;
long ans;
int r = p % 3;
long base = 3;
int k = p / 3;
if (r == 0) {
ans = modPow(base, k, MOD);
} elseif (r == 1) {
// 用一个 3 + 1 改成 2 + 2
ans = (modPow(base, k - 1, MOD) * 4) % MOD;
} else {
// 余 2
ans = (modPow(base, k, MOD) * 2) % MOD;
}
return (int) ans;
}
privatelongmodPow(long a, long e, long mod){
long res = 1;
a %= mod;
while (e > 0) {
if ((e & 1) == 1) res = (res * a) % mod;
a = (a * a) % mod;
e >>= 1;
}
return res;
}
// 简单测一下
publicstaticvoidmain(String[] args){
Solution s = new Solution();
System.out.println(s.maxNiceDivisors(1)); // 1
System.out.println(s.maxNiceDivisors(2)); // 2
System.out.println(s.maxNiceDivisors(3)); // 3
System.out.println(s.maxNiceDivisors(4)); // 4 -> 2*2
System.out.println(s.maxNiceDivisors(5)); // 6 -> 3*2
System.out.println(s.maxNiceDivisors(8)); // 18 -> 3*3*2
}
}
为啥这段代码对?你把 p=3a、3a+1、3a+2 三种情况对照想: ——3a 就是 3^a; ——3a+1 把最后的“3+1”换“2+2”,所以是 3^(a-1)4; ——3a+2 就是 3^a2。 这三种都是“指数+1的乘积”最大,也就是好因子数最大。时间复杂度 O(log p),空间 O(1)。
我刚说到这,工位后面有人敲我椅子,喊去开会…先这样,你们把样例跑跑看,卡住再艾特我。
-END-
我为大家打造了一份RPA教程,完全免费:songshuhezi.com/rpa.html