C++ Code:
  1. #include <iostream>
  2. double f(unsigned int n);
  3. int main()
  4. {
  5. double y;
  6. double sa;
  7. double sb;
  8. double da;
  9. double db;
  10. bool Flag;
  11. int n;
  12. std::cin>>y;
  13. for (n=1, Flag=true; Flag;++n)
  14. {
  15.   sa=f(n);
  16.   sb=f(n+1);
  17.   da=(y-sa)*(y-sa);
  18.   db=(y-sb)*(y-sb);
  19.   if (sa<sb)
  20.   {
  21.    Flag=false;
  22.   }
  23. }
  24. std::cout<<n<<std::endl;
  25. return 0;
  26. }
  27. double f(unsigned int n)
  28. {
  29. double r=0.0;
  30. for (; n>0; --n)
  31. {
  32.   r+=(1.0/((double)n));
  33. }
  34. return r;
  35. }

Ответ
Для заданного y находит n, при котором сумма ряда 1/n принимает значение, наиболее близкое к введённому y.