История изменений
Исправление Chubakur, (текущая версия) :
Ага курсовая, это лабораторка :-(
mpz_init_set_str(a,"6511709995802996252529428210009069141516455100602512742258547866292839663070281213795462953359084389612327175129512390242393774885156190907043183764572298",10);
mpz_init_set_str(b,"4016751268155181878780762958485595786864539552267966173503519872828650364102948010668074636189225260885467109630266705699778224615794326630829490560742794",10);
mpz_init_set_str(m,"9913033868557133667485171584043308894354447793802229576147965224579616862439637051468618269920939124273132778910108308880842351094700094598897767100778663",10);
const unsigned long long n = 1048576;
KeyValue* mem = (KeyValue*)calloc(n+1, sizeof(KeyValue));
mpz_t tmp; mpz_init_set(tmp,b);
KeyValue* memp = mem;
uint64_t* export_buffer = new uint64_t[8];
for(unsigned int x1=0;x1<=n;++x1){
mpz_export(export_buffer,NULL,0,sizeof(uint64_t),0,0,tmp);
memp->key = x1;
memp->value = export_buffer[0];
mpz_mul(tmp, tmp, a);
mpz_mod(tmp,tmp,m);
memp++;
}
//qsort(mem,n+1,sizeof(KeyValue),compare);
//std::sort(mem, mem+n+1);
std::sort(mem, mem + n + 1, [](KeyValue const& l, KeyValue const& r) { return l.value < r.value; });
Исходная версия Chubakur, :
Ага курсовая, это лабораторка :-(
mpz_init_set_str(a,"6511709995802996252529428210009069141516455100602512742258547866292839663070281213795462953359084389612327175129512390242393774885156190907043183764572298",10);
mpz_init_set_str(b,"4016751268155181878780762958485595786864539552267966173503519872828650364102948010668074636189225260885467109630266705699778224615794326630829490560742794",10);
mpz_init_set_str(m,"9913033868557133667485171584043308894354447793802229576147965224579616862439637051468618269920939124273132778910108308880842351094700094598897767100778663",10);
const unsigned long long n = 1048576;
KeyValue* mem = (KeyValue*)calloc(n+1, sizeof(KeyValue));
mpz_t tmp; mpz_init_set(tmp,b);
uint64_t* export_buffer = new uint64_t[8];
for(unsigned int x1=0;x1<=n;++x1){
mpz_export(export_buffer,NULL,0,sizeof(uint64_t),0,0,tmp);
memp->key = x1;
memp->value = export_buffer[0];
mpz_mul(tmp, tmp, a);
mpz_mod(tmp,tmp,m);
memp++;
}
//qsort(mem,n+1,sizeof(KeyValue),compare);
//std::sort(mem, mem+n+1);
std::sort(mem, mem + n + 1, [](KeyValue const& l, KeyValue const& r) { return l.value < r.value; });