Cod sursa(job #3189787)

Utilizator horia.boeriuBoeriu Horia Andrei horia.boeriu Data 6 ianuarie 2024 15:09:20
Problema Patrate2 Scor 100
Compilator c-64 Status done
Runda Arhiva de probleme Marime 1.33 kb
#include <stdio.h>
#include <stdlib.h>
#define MAX 400000
#define MOD 1000000000000000
unsigned long long v[MAX];
int main()
{
    FILE *fin, *fout;
    int n, i, a, l, l1, j;
    unsigned long long t, p;
    fin = fopen("patrate2.in", "r");
    fscanf(fin, "%d", &l);
    fclose(fin);
    n = v[0] = 1;
    l1 = l * l;
    for (j = 0; j < l1; j++) {
        t = i = 0;
        while (i < n || t > 0) {
            t += 2 * v[i];
            v[i] = t % MOD;
            t /= MOD;
            i++;
        }
        if (i > n) {
            n = i;
        }
    }
    for (a = 2; a <= l; a++) {
        t = i = 0;
        while (i < n || t > 0) {
            t += a * v[i];
            v[i] = t % MOD;
            t /= MOD;
            i++;
        }
        if (i > n) {
            n = i;
        }
    }
    fout = fopen("patrate2.out", "w");
    fprintf(fout, "%llu", v[n - 1]);
    for (i = n - 2; i >= 0; i--) {
        if (v[i] == 0) {
            p = MOD / 10;
            while (p > 0) {
                fputc('0', fout);
                p /= 10;
            }
        } else {
            p = MOD / 10;
            while (p > v[i]) {
                fputc('0', fout);
                p /= 10;
            }
            fprintf(fout, "%llu", v[i]);
        }
    }
    fclose(fout);
    return 0;
}