输出四字节数阶乘最大的数

为什么运行不了啊
题目是编程输出4字节表示的整数中阶乘值最大的那个整数和它的阶乘
辣鸡学生党求指点🥺

img

img



#include <stdio.h>
#include<math.h>
int main()
{
  long long i=1, n=1, s=pow(2,31)-1;
    while(n<s) 
    {
        i++;
        n *= i;
    }
    n /= i;
    i--;
    printf("%lld  %lld", i, n);
}


#include <iostream>
#include <cstring>
using namespace std;
const int MAXN = 3000; 
int ans[MAXN];//0个位,1十位... 
int main(){
    int n;
    cin>>n;
    memset(ans,0,sizeof(ans));//数组置为0 
    ans[0] = 1;
    //做乘法
    for(int i=2; i<=n; i++){
        int c = 0;//保存进位 
        for(int j=0; j<MAXN; j++){
            int temp = ans[j]*i+c;//每个数都要与i相乘
            ans[j] = temp%10;
            c = temp/10;
        }
    }
    //输出
    int i;
    for(i=MAXN-1; i>=0; i--) if(ans[i]) break;//过滤前面的0 
    for(int j=i; j>=0; j--) cout<<ans[j];
    return 0;
}