C/C++

Помогите, пожалуйста, нужно написать программу на C++

#include <iostream>
#include <iomanip>
using namespace std;
double a(int n, double x, double m = 1) {
if (n <= 1) return m;
m *= (x - n);
return a(n >> 1, x, m);
}
double b(int n, double x, double m = 1) {
if (n <= 1) return m;
m *= (x - (n - 1));
return b(n >> 1, x, m);
}
int main() {
cout << "x: ";
double x;
cin >> x;
const int n = 128;
auto y = a(n, x) / b(n, x);
cout << fixed << setprecision(15) << y << '\n';
system("pause > nul");
}
Владимир Попов
Владимир Попов
74 480
Лучший ответ
#include <iostream>
#include <cmath>
using namespace std;

int main()
{
double x,i,j,r;

cout << "Введите x: ";
cin >> x;

i=j=1.0;

for(int u=2, v=1; u<=128; v++, u=pow(2,v))
{
cout << '(' << x << '-' << u << ")*";
i *= (x-u);
}
cout << "1/(" << endl;

for(int z=1,w=1; z<=127; z+=pow(2,w),w++)
{
cout << '(' << x << '-' << z << ")*";
j *= (x-z);
}
cout << "1)" << endl;

r=i/j;
cout << "Получилось: " << r << '.' << endl;

return 0;
}
Проверь второй цикл. МОжет там подправить надо
#include
using namespace std;

int main()
{
int long x;
cin >> x;
int long VERX = 1;
int long NIZ = 1;
for (int i = 2; i < 129; i *= 2)
{
VERX *= (x - i);
}
for (int i = 2; i < 129; i *= 2)
{
NIZ *= (x - i - 1);
}
if (NIZ != 0)
cout << (long double (VERX) / long double(NIZ));
else cout << "Error";
}