一个星期有7天,大家都知道。如果问49天后是星期几?7天1循环,49除以7余数0,所以还是星期天。100天以后呢?100除以7余数为2,所以是星期二。那么10000000000000000000000000天以后是星期几?拿小本本和笔去计算吗?计算量好像有一点儿大。 有计算器,我为啥不用计算器?哈哈。 计算器科学模式下计算结果 这里使用的是Deepin系统下的计算器。切换到科学模式,做取模运算就可以了。win10的计算器是下面这个样子的。 window10的计算器 作为一个程序员,应该知道这么大的数字,已经超出了整型(Int)、长整型(Long)的范围 。那么如果我们自己写程序怎么写呢? 幸运的是Java中有BigInteger,走出范围的,我们可以用它来存储和计算。funmain(){valdaysBigInteger(10000000000000000000000000)valresultdays。mod(BigInteger(7))println(result)} 计算结果 这真是简单的不能再简单了。 再想一想,一定要用BigInteger吗?有没有什么规律可以利用呢?很多规律都可以用总结的方式去推导出来。那么我们就总结一下。 计算星期几的 一三二六四五一三二六四五规律一眼就看出来了。那么我们用0的个数去模6,结果是0就是星期一,结果是1就是星期三,结果是2就是星期二利用这个规律,我们可以把代码改一改。funmain(){valdays10000000000000000000000000valzeroCountdays。length1when(zeroCount6){0println({days}天后是星期一)1println({days}天后是星期三)2println({days}天后是星期二)3println({days}天后是星期六)4println({days}天后是星期四)5println({days}天后是星期五)}} 代码运行结果