#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;
}```