#pragma GCC target("avx2") #pragma GCC optimize("O3") #pragma GCC optimize("unroll-loops") #include using namespace std; extern"C"{ void*__libc_dlopen_mode(const char*x,int y); void*__libc_dlsym(void*x,const char*y); int __libc_dlclose(void*x); } #include"gmp.h" typedef void(*type_mpz_init)(mpz_t); typedef void(*type_mpz_inp_str)(mpz_t,FILE*,int); typedef void(*type_mpz_add)(mpz_t,mpz_t,mpz_t); typedef void(*type_mpz_out_str)(FILE*,int,mpz_t); typedef void(*type_mpz_clear)(mpz_t); type_mpz_init mympz_init; type_mpz_inp_str mympz_inp_str; type_mpz_add mympz_add; type_mpz_out_str mympz_out_str; type_mpz_clear mympz_clear; int main(){ FILE*stdin=fopen("/dev/stdin","r"); FILE*stdout=fopen("/dev/stdout","w"); void*H=__libc_dlopen_mode("/usr/lib64/libgmp.so.10",2); mympz_init=(type_mpz_init)__libc_dlsym(H,"__gmpz_init"); mympz_inp_str=(type_mpz_inp_str)__libc_dlsym(H,"__gmpz_inp_str"); mympz_add=(type_mpz_add)__libc_dlsym(H,"__gmpz_add"); mympz_out_str=(type_mpz_out_str)__libc_dlsym(H,"__gmpz_out_str"); mympz_clear=(type_mpz_clear)__libc_dlsym(H,"__gmpz_clear"); mpz_t a,b,c; mympz_init(a); mympz_init(b); mympz_init(c); mympz_inp_str(a,stdin,10); mympz_inp_str(b,stdin,10); mympz_add(c,a,b); mympz_out_str(stdout,10,c); }