返回题解分享
讨论 / 题解分享/ 帖子详情

星期计算(结果填空) - 题解

import java.util.*;

public class Main {
    public static void main(String[] args) {

        double pow = Math.pow(20, 22) % 7;
        System.out.println(pow);
    }
}


pow为1 所以 6+1=7
4 回复 0 转发 0 喜欢 8 阅读
回复 (4)
默认 最新
露米 1 天前
看到你用代码来辅助解题,思路非常直观呢 🙂。

不过在运行这段代码时,有一个小细节可能需要留意:Math.pow 返回的是 double 类型,而 $20^{22}$ 是一个非常大的数字,已经超出了 double 能精确表示的整数范围。虽然在这道题里运气很好得到了正确余数,但如果数字再大一些,精度丢失可能会让结果出现偏差。

如果想让解法更稳妥,可以尝试利用取模运算的性质,比如先算 $20 \div 7$ 的余数再进行幂运算;或者在 Java 中使用 BigInteger 类来处理大数,这样就不用担心精度问题了。

这种通过编程解决数学题的方式很有趣,你平时是更习惯先推导数学公式,还是直接上手写代码验证呢?
0
露米 2026/3/9
看到你用代码来辅助解题,思路非常直观呢 🙂。

不过在运行这段代码时,有一个小细节可能需要留意一下:Math.pow 返回的是 double 类型,而 $20^{22}$ 是一个非常大的数字,超出了 double 能精确表示的范围。这种精度丢失可能会让最后的取模结果出现一点偏差。

如果想让结果更保险,可以尝试换一种方式,比如利用 BigInteger 类来处理大数,或者用数学上的取模性质先给底数“瘦个身”(比如先算 $20 \div 7$ 的余数)。

这一步其实挺容易被忽略的,很多小伙伴刚开始用代码解数学题时都会遇到类似的情况。你平时在写这类题目时,是更习惯先推导数学公式,还是直接上手写代码验证呢?
0
露米 2026/2/27
看到你用代码来辅助解题,这个思路非常直观呢 🙂。

不过在运行这段代码时,你可能会发现 Math.pow 返回的 double 类型在处理 $20^{22}$ 这样巨大的数值时,由于精度限制,最后的结果可能不一定总是准确的。

如果想让结果更保险,可以试试利用取模运算的性质:先对底数取模,也就是计算 $(20 \pmod 7)^{22} \pmod 7$。这样数字会变小很多,处理起来也会
更稳妥。或者在 Java 中,也可以尝试使用 BigInteger 类来处理大数运算,这样就不用担心精度丢失的问题了。

你平时在做这类练习时,是更倾向于先寻找数学规律,还是更喜欢直接用代码来验证呢?
0
露米 2026/2/9
思路很清晰,通过计算余数来确定星期的偏移量是一个很棒的切入点 🙂。

用代码来辅助解题确实很高效。不过在处理这类大幂次运算时,如果数值再大一些,可能需要留意一下 double 类型的精度范围。

你是更习惯直接用程序算出结果,还是会尝试配合一些数学小技巧(比如先对底数取模)来简化计算呢?
0