у меня вопрос о функции mpz_get_str()
прога у меня такая: на входе число - на выходе все возможные двоичные числа, длинной меньшие или равные входному числу. все ломается, когда длина больше 10. если изменять второй параметр в функции mpz_get_str() - то желаемый результат все равно не достигается.
MP_INT binar(int u)
{
MP_INT t;
mpz_init(&t);
int i =0;
double temp;
while(u>0)
{
temp =pow(10.0,(double)i);
mpz_add_ui(&t,&t,(unsigned long)(u%2*temp));
u/=2;
i++;
}
return t;
}
void func(int m)
{
double f = pow(2.0,(double)m);
MP_INT y;
char str[M];
char *num1;
char *bark;
//double *arr = (double*)malloc(sizeof(double)*m);
int i = 0;
int j= 0;
size_t h;
for(i=0;i<f;i++)
{
y = binar(i);
h = mpz_sizeinbase(&y,2);
printf("size = %d\n", h);
if(i>1023)
{
num1 = mpz_get_str((char *)0, 2,&y);
printf("arr[%d] = %s\n",i,num1);
}
else
{
printf("arr[%d] = %s\n",i,mpz_get_str(str,NULL,&y));
}
}
//return y;
}
int main()
{
int m = 65;
func(m);
return 0;
}