• 程序员的数学之余数:星期数的思考


    课前对话

       老师:奇数是什么?
    学生:是1,3,5,7,9,11...
    老师:对!奇数就是被2除余1的整数?那么偶数呢?
    学生:能被2整除的整数
    老师:正是!偶是就是被2除余2的整数。
    学生:这其中有何奥妙呢?
    老师:除法就像分组 学生:分组?
    老师:根据余数来确定它属于哪个分组。

    思考题一

       今天是星期日,那么100天以后是星期几?

    【思考题答案】

       一周有7天,每过7天,便循环到相同的星期数。如果今天是星期日,那么7天后、14天后、21天后。。。这种“7的倍数”都是星期日。答案是星期二。

    【应用余数思考】

       2
    假设今天是星期日,100天后的星期数就是100除以7的余数。因此100天后是星期二。

    余数的力量-将较大的数字除一次就能分组

    但是如果问题改成求1亿天后的星期数的话,靠数数就解决不了问题了。即使1秒能数一下,数到1亿至少也要话费3年以上的时间。而如果运用余数的话,很快就能 算出来。100000000%7 = 2。因为余数是2,所以1亿天以后是星期二。

    星期数思考题二

       这次我们来挑战稍微难一点的星期思考题。

       今天是星期日,那么100^100天后是星期几?

    可以直接计算吗?

       如果能像求100天以后的星期数那样,用100^除以7的余数来计算就好了。但实际上数字太大了。计算起来相当费力。即使借助计算器也很难完成。

       那么这道思考题有没有周期性呢?请寻找它的规律。

    思考题答案

       我们并不急于求出100^100次方,而是像1,10,100,1000,10000 。。。这样,一次增加0的个数,观察其规律。

    排序键值字段的类型
    0的个数    
    0 1%7 = 1 1
    1 10%7 = 3 3
    2 100%7 = 2 2
    3 1000%7=6 6
    4 10000%7=4 4
    5 100000%7 = 5 5
    6 1000000%7 = 5 1
    7 10000000%7 = 5 3
    8 100000000%7 = 2 2
    9 1000000000%7 = 6 6
    10 10000000000%7 = 4 4
    11 10000000000%7 = 5 5
    12 100000000000%7 = 1 1

       果然有规律呢!余数以1、3、2、4、6、4、5。。的顺序循环。这个周期性很快能让我们得到答案。因此100^100天后的星期数,可以将天数中的0的个数除以6,通过 余数来判断。我们来计算一下:100%6 = 4。答案是星期四。

    【回顾】规律和余数的关系

       从上面2个题目可以看出,有时候庞大的数值不能计算,可以先用小的数字进行试算。这时的要点是要找出规律。只要找出规律,剩下的问题就可以通过余数来解决。

    作者

       出处:http://www.cnblogs.com/gina

       本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    关于requests.exceptions.SSLError: HTTPSConnectionPool(host='XXX', port=443)问题
    python Requests库总结
    fiddler实现手机抓包及手机安装证书报错“无法安装该证书 因为无法读取该证书文件”解决方法
    django接口的工作原理
    postman+newman+jenkins 持续集成搭建及使用,实现接口自动化
    Jmeter之JDBC Request及参数化
    selenium+Python中的面试总结
    UI自动化测试:页面截图的3种方法
    selenium中通过location和size定位元素坐标
    Allure+pytest生成测试报告
  • 原文地址:https://www.cnblogs.com/gina/p/3249769.html
Copyright © 2020-2023  润新知