python做網(wǎng)站用什么百度論壇
/ 10^9考慮前九位,% 10^9保留后9位
解題思路:
求獲取結(jié)果的后九位數(shù)字,需要對(duì)10^9取余,因?yàn)?02320232023這個(gè)數(shù)字的階乘太大,必須要減少計(jì)算量,因?yàn)楫?dāng)一個(gè)整數(shù)乘以10^9后對(duì)其取余,那么結(jié)果都為0。
所以我們只需要找到從第幾個(gè)數(shù)的階乘開始乘以了10^9即可,所以說從100開始(實(shí)際上最少可以從40左右開始,40及其之后的數(shù)字都可以,但我們不可能一下子的精確的通過估算找到40這個(gè)數(shù),所以可以取大一些,不過是時(shí)間長(zhǎng)了點(diǎn),結(jié)果是沒問題的),后面的數(shù)的階乘就可以直接省略了。就把問題簡(jiǎn)化為了從1的階乘加到100的階乘,取其后9位數(shù)字。
import java.util.Scanner;
// 1:無(wú)需package
// 2: 類名必須Main, 不可修改public class Main {public static void main(String[] args) {long sum = 0, num;int mod = (int) Math.pow(10, 9);for (int i = 1; i <= 100; i++) {num = 1;for (int j = 1; j <= i; j++) {num *= j;num %= mod;}sum += num;sum %= mod;}System.out.println(sum);}
}