#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <openssl/bn.h>

int main()
{
BN_CTX *r[16];
BIGNUM *bn[17];
int i;
const char s[16][9]={"20201219","20201220","20201221","20201222","20201223","20201224","20201225","20201226","20201227","20201228","20201229","20201230","20201231","20201232","20201201","20201202"};
char* out;
char t[2]="1";



for(i=0;i<16;i++){
bn[i]=BN_new();
BN_dec2bn(&bn[i],s[i]);
r[i] = BN_CTX_new();
}
bn[16]=BN_new();
BN_dec2bn(&bn[11],t);

for(i=0;i<16;i++){
BN_mul(bn[16],bn[16],bn[i],r[i]); //计算11个同学学号的乘积
}

out= BN_bn2dec(bn[16]); //将大数转化转化成十进制的字符串

puts(out);//打印出字符串


for(i=0;i<16;i++){
BN_free(bn[i]);
BN_CTX_free(r[i]);

}
BN_free(bn[i]);

free(out);

return 0;
}
#include<gmp.h>
int main()
{
    mpz_t a, b, c, d;
    mpz_init(a);
    mpz_init(b);
    mpz_init(c);
    mpz_init(d);
    mpz_init_set_str(a,"20201214",10);
    mpz_init_set_str(b,"1",10);
    mpz_init_set_str(d,"1",10);
    for (int i=0;i<11;i++)
    {
        mpz_mul(d,d,a);
        mpz_add(a,a,b);
    }
    gmp_printf("d = %Zd\n", d);
    mpz_clear(a);
    mpz_clear(b);
    mpz_clear(d);
    return 0;
}```