1. 程式人生 > >藍橋杯 演算法訓練 階乘末尾

藍橋杯 演算法訓練 階乘末尾

問題描述
  給定n和len,輸出n!末尾len位。
輸入格式
  一行兩個正整數n和len。
輸出格式
  一行一個字串,表示答案。長度不足用前置零補全。
樣例輸入
6 5
樣例輸出
00720
資料規模和約定
  n<=30, len<=10。

#include <iostream>

using namespace std;


int main() {
    int n, len,a[20];
    cin >> n >> len;
    long long ans = 1; //18階乘如果int會溢位 
    for (int
i = 1; i <= n; i++) { ans *= i; ans %= 10000000000;// 即使是ll 22,23階乘仍會溢位,因此要消除掉不需要的數 } //cout << ans << endl; for (int i = len; i > 0; i--) { a[i] = ans % 10; ans /= 10; } for (int i = 1; i <= len; i++) { cout << a[i]; } cin
>> n; return 0; }