LINUX.ORG.RU

История изменений

Исправление 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; });