超出时间限制[c++]:每个数字阶乘的最后一位 我的C++代码中的时间限制超过了错误。 这是一个简单的算法,输出用户给出的每个数字阶乘的最后一位

超出时间限制[c++]:每个数字阶乘的最后一位 我的C++代码中的时间限制超过了错误。 这是一个简单的算法,输出用户给出的每个数字阶乘的最后一位,c++,C++,例1: 输入:4,输出:4,解释:4!=4 * 3 * 2 * 1. = 2424的最后一位是4 例2: 输入:5,输出:0,解释:5!=5 * 4 * 3 * 2 * 1. = 120120的最后一位是0 代码如下: #include <iostream> using namespace std; int Fact(int n){ int p=1; for(int i=1;i<=n;i++){ p = p * i; }

例1:

输入:4,输出:4,解释:4!=4 * 3 * 2 * 1. = 2424的最后一位是4

例2:

输入:5,输出:0,解释:5!=5 * 4 * 3 * 2 * 1. = 120120的最后一位是0

代码如下:

#include <iostream>

using namespace std;

int Fact(int n){
    int p=1;
    for(int i=1;i<=n;i++){
        p = p * i;
    }
    return p;
}

int LastDigit(int n){
    return n % 10;
}


int main()
{
    int t,n;
    cin >> t;
    int T[t];
    for(int i=0;i<t;i++){
        cin >> n;
        T[i]=LastDigit(Fact(n));
    }
    for(int i=0;i<t;i++){
        cout <<T[i]<<endl;
    }
    cout << Fact(10);

}
谢谢你给我一个详细的答复。

这就是你需要的吗

包括 包括 智力因素 { 如果n>4 { 返回0; } 其他的 { 长整数=1; 对于int i=1;i>t; std::向量Tt; 对于int i=0;i>n; T[i]=FactLastDigitn; } 对于int i=0;iSTD::CUT PROTIVE:可变长度的数组不是C++标准的一部分。最好为你的代码提供一个输入/输出和你的期望。除了降低你的时间之外,你还想解决什么问题?你知道有什么特定的问题会导致执行时间的延长吗?大多数的竞赛都是显而易见的。on太慢了。你真的需要计算整个阶乘才能算出最后一个数字吗?关于@AlanBirtles的评论,我相信另一个网站上的这个问题可能会帮助你修改算法: