Obliczanie wszystkich kombinacji pewnej liczby danej wzorem

0

Witam. Od jakiegoś czasu zajmuję się problemami związanymi z problemem Collatza, po drodze natrafiłem na konieczność wypisywania oraz sprawdzania właściwości liczb zadanych poniższym wzorem, stąd moja obecność tutaj.

Jak napisać program, będzie liczył czy wśród liczb postaci:

w = (2(x1) + 2(x2) * (p(1))/2 + 2(x3) * p(2)/4 + 2(x4) * p(3)/8 + ... + p(xn)/2(xn)) * 2(y-1)/(2(x+y)-p(y))

są liczby naturalne?

przy czym wykładniki muszą spełniać warunki:
x1, x2, x3, ..., xn należą do liczb (0,x)
oraz
x1 >= x2 >= x3 >= ... xn

do tego n=y-1, czyli wykładników xn jest dokładnie y-1.

Liczby p, x, y mają być dane z góry. Program musi sprawdzić - policzyć wszystkie liczby w, które zadaje wzór. Do tego celu trzeba "wypisać" wszystkie kombinacje x1, x2, x3, ..., xn, zgodnie z podanymi warunkami (ilość tych kombinacji można policzyć z dwumianu Newtona, będzie ich (x+y) po y), a następnie "wstawić" je do wzoru i sprawdzać czy wynik jest całkowity/naturalny.

Utknąłem już na prostym przypadku y=5, gdy próbowałem policzyć wyniki dla zmiennej x1 i dla pozostałych x_k=0. Nawet dla tego prostego przypadku program mi nie działa. Czy ktoś jest w stanie napisać uniwersalny kod dla ogólnego przypadku?

#include<stdio.h>
#include<math.h>

/*Crandall*/


int main(void)

{

long long int p;

long double w;

long long int a;

long long int b;

long long int c;

long long int d;

for(;;)
{
a=0;
b=0;
c=0;
d=0;
printf("podaj liczbe: ");
scanf("%lld",&p);

for(a = 0;a < 34; a++) 
{

w = (2<sup>(a) + 2</sup>(b) * (97<sup>(1))/2 + 2</sup>(c) * 97<sup>(2)/4+2</sup>d * 97<sup>(3)/8+ 97</sup>(4)/16) * 4/(2<sup>(33)-97</sup>(5))

printf("%f \n", w);

}
}
return(0);

}
<\code>
0

Pocięło mi ten wzór w sposób, który uniemożliwia jego odczytanie. Jak zapisywać tu wyrażenia matematyczne?

0
  1. W zapisie równana masz na 100% błąd.
  2. W C/C++ oraz C-podobnych znak ^ oznacza xor a nie potęgę
0
_13th_Dragon napisał(a):

W zapisie równana masz na 100% błąd.

W C/C++ oraz C-podobnych znak ^ oznacza xor a nie potęgę

Faktycznie.

Nadal nie mogę naprawić wątku, z uwagi na brak możliwości zapisania wzoru.

1 użytkowników online, w tym zalogowanych: 0, gości: 1