Выписываем только те степени двойки, которые соответствуют позициям единиц в двоичной записи. Как это делать на практике? 1. Целая часть Записываем, ведя счет СПРАВА НАЛЕВО, номера позиций единиц, причем отсчет начинаем С НУЛЯ: 2,3,4,6,8. Мы получили степени двойки, которые надо вычислить и сложить. 4+8+16+64+256=348 2. Дробная часть Записываем, ведя счет в обычном направлении номера позиций единиц, начиная отсчет С ЕДИНИЦЫ: 3. Мы получили степени двойки, которые должны стоять в знаменателе дробей (а в числители будут стоять единицы). Это дает 1/8 или 0.125.
1.
#include <iostream>
using namespace std;
int main()
{
double n, j = 1;
long long i;
cin >> n;
for(i = 2; i <= n; i++)
if(i % 2)
j += (1.0/(2.0*i-1.0));
else
j -= (1.0/(2.0*i-1.0));
cout << j << endl;
return 0;
}
2.
#include <iostream>
using namespace std;
int main()
{
double n, j = 0;
long long i;
cin >> n;
for(i = 1; i <= n; i++)
j += (1.0/(n*(n+3.0)));
cout << j << endl;
return 0;
}
Объяснение: