题意:
先输入一个整数n,表示有n个测试案例,接下来第输入一个数a(1<=a<=10000000),求a的阶乘位数,并输出。
错误解决方案:
采用大数方法进行解决,但a的输入范围太大,使用大数会超时,代码:
#include<iostream>
#define N 1000
using namespace std;
//大数计算函数
void calculate(int arr[],int t)
{
int i;
int c=0;
int temp;
for(i=0; i<N; i++)
{
temp=arr[i];
arr[i]=(arr[i]*t+c)%10;
c=(temp*t+c)/10;
}
}
int main()
{
int n,count,t,i;
int arr[N] = {0};
arr[0]=1;
cin>>n;
while(n--)
{
cin>>t;
for(i=1; i<=t; i++)
{
calculate(arr,i);
}
for(i=N-1; i>=0; i--)
{
if(arr[i]) brea