水着 / paizaOnlineHackathon7

paiza.jp

#include <iostream>
using namespace std;

#define MOD 1000000000

void Solve(int n)   {
    long long answer = 1;

    for (int i=n; i>0; --i)    {
        answer *= i;
        while (answer%10 == 0)
            answer /= 10;
        if (answer > MOD)   answer %= MOD*(long long)10;
    }
    cout << answer%MOD << endl;
}

int main(void)  {
    int n;

    cin >> n;
    Solve(n);
    return 0;
}

後ろから階乗を求め、後ろの0を削除と前の0を削除して結果を出力。
〜了〜