欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

伍六七带你学算法——被忽视的数学公式

程序员文章站 2022-05-08 19:42:43
...

中学时候学习那么多的数学,却没有人告诉我们这些数学公式我们以后会用到哪里?疑惑了十好几年,直到,你进入it行业,它的舞台来了!

在力扣上有一道中度难度的题,题目是这样的????
伍六七带你学算法——被忽视的数学公式
(图片质量不是很好!)

题目: 求 1+2+…+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。

高中毕业后把数学一下子抛之脑后的我一下子懵了,作为一个真正意义上的搬砖工,我已经只会for if,不让我循环??怎么做呢?
大概让以前的老师直到我这样可能想给我一拖板~
我靠 这不就是等差数列求和嘛,首尾一加再一除不就好了????
于是我满怀羞涩的写下了下面的答案~

public class _面试题64_ {
    /**
     * 解题思路:
     *      只需要用到我们中学数学中学过的等差数列求和公式
     *      Sn=n(a1+an)/2 Sn=na1+n(n-1)d/2=dn^2/2+(a1-d/2)n
     *      公式中首项为a1,末项为an,项数为n,公差为d,前n项和为Sn。
     *      这里 我们的公差 d = 1 ,a1 = 1 , an = n , 套用公式 套用公式 Sn = (n^2+n)/2
     *
     * @param n
     * @return
     */
    public static int sumNums(int n) {
       return (int) (Math.pow(n, 2) + n) >> 1;
    }
    public static int sumNums2(int n) {
        return (1+n)*n/2;
    }
    //test
    public static void main(String[] args) {
        System.out.println(sumNums(8)+"-------"+sumNums2(8));
    }
}

尾注:
就在六一儿童节,我结束了我的大学生涯,我毕业了!
学习了那么多年知识,课本让人麻木,到18岁我都不知道学那些数理化史地生有何用?老师也没那闲心告诉你,如今的*里人家也没那义务。
大学四年,我才慢慢的将这些东西慢慢消化掉。我知道在生活中很多东西不能放在一起,他们之间是会有催化作用的;我知道,如果用好数学公式,前人发现、总结的这些规律会让你在很多时候不那么费劲;我知道,为什么我的家乡冬暖夏凉,我也给奶奶讲为什么夏天太阳照不到家里来;我知道,无论什么病症,多半是细菌感染,首要一步是消炎;我知道,在别的语言里也有美妙的诗歌和有趣的历史、灵魂。在大学,我慢慢的解开了这些问题。我不再像以前一样那么怨恨书本和教育*以及所谓的一考定终身。
就像派大星和海绵宝宝一样,我和我最好的朋友渐行渐远,一年可能不发几条消息。但当他有困难,我一定是最快能帮到他的。我相信遇到困难的人是我,他,也是一样的,真正的朋友永远是这样的。
如今的我,有些对未来的恐惧,但我知道,只要我往前走,心里的石头就会更平稳。不再以一个毛头小子的视角面对社会。
亲历,望来日如期!