1381.階乗(再帰的シミュレーション)

AcWing:1381。階乗

ここに画像の説明を挿入

毎回最後の7ビットを保持します

中間結果を保存するためにlongを使用する


ACコード

import java.util.*;
import static java.lang.System.out;

public class Main{
    
    
    
    public static void main(String [] args) {
    
    
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        long ans = 1;
        for(int i = 2; i <= n; i++) {
    
    
            ans *= i;
            while(ans % 10 == 0) ans /= 10;
            
            // 1000 * 1000
            // 为什么是 7 位呢?因为数据范围是 1 ~ 1000。
            // 两数相乘的结果,最多有 6 个零。所以保留 7 位肯定没问题。
            ans = ans % 10000000;
        }
        
        out.println(ans % 10);
    }
    
}




おすすめ

転載: blog.csdn.net/qq_43765535/article/details/113101971