题目

https://www.luogu.com.cn/problem/P1009

CODE

//高精度
#include<bits/stdc++.h>
using namespace std;

int n, a[100010], b[100010], c[100010], len, lenc = 1;


int main(){
    scanf("%d", &n);
    a[1] = 1;
    for(int P = 1; P <= n; P++){
        int j = 0;
        bool k_ = true;
        for(int i = 1; k_; i++){
            a[i] = a[i] * P + j;
            j = a[i] / 10;
            a[i] %= 10;
            if(a[i] == 0 && j == 0 && i > lenc){
                k_ = false;
            }
            lenc = i > lenc ? i : lenc;
        }
        j = 0;
        for(int i = 1; i <= 1000; i++){
            c[i] += a[i] + j;
            j = c[i] / 10;
            c[i] %= 10;
            len = i > len ? i : len;
        }
    }
    bool k = true;
    for(int i = len; i >= 1; i--){
        if(c[i] == 0 && k){
            continue;
        }
        k = false;
        printf("%d", c[i]);
    }
    printf("\n");
    return 0;
}

中间嵌套的2个循环 判断条件卡了好久,一直WA
基本上带个数字就发现问题了