首页 > 解决方案 > 对从 1 到 n 的值求和一系列 n^n 且没有溢出?只需要答案的最后一位数字

问题描述

我想编写一个 Java 程序,对从 1 到 n 的所有整数 n^n 求和。我只需要这个数字的最后 10 位数字,但给定的 n 值超过 800。

我已经编写了一个基本的 java 程序来计算它,它适用于 n < 16。但它显然不能处理这么大的数字。我想知道是否有一种方法可以只收集一个通常会溢出很长的数字的最后 10 位数字,如果是这样,那么该方法或技术可能是什么。

我没有要显示的代码,只是因为我编写的代码正是您所期望的。一个在 i<=n 时运行 i*i 的 for 循环和一个将每次迭代与之前的迭代相加的计数器。有用。我只是不知道如何解决更大数字的问题,需要指导。

在 n=16 左右,数字溢出一个 long,并返回负值。BigInteger 会对此有所帮助,还是数据类型仍然太小?或者有人可以向我指出一种收集大量数字的最后 10 位数字的技术吗?我可以将它存储在一个数组中,然后将它们总结起来,如果我能做到那么远的话。

无论如何,我不希望有一个完整的代码,但也许有一些关于我如何重新看待这个问题的建议?我的 n00b 自我缺少一些技术?

谢谢!

标签: javabiginteger

解决方案



推荐阅读