Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <set>
- #include <math.h>
- #include <iomanip>
- // #define pi 3.14159265
- using namespace std;
- using ll = long long;
- ll factorial(ll x) {
- if (x <= 1)
- return 1;
- return x * factorial(x - 1);
- }
- int getPers(double e) {
- int count = 0;
- while (e < 1) {
- e *= 10;
- count++;
- }
- return count;
- }
- int main() {
- long double num, e;
- long double pi = 3.14159265;
- cin >> num >> e;
- int sign = 1;
- num = fmod(num, 2 * pi);
- //while (num - 2 * pi > pi / 2)
- // num -= 2 * pi;
- //while (num + 2 * pi < - pi / 2)
- // num += 2 * pi;
- if (num < 0.0) {
- sign *= -1;
- num = num * -1;
- }
- if (num > pi / 2) {
- num = pi - num;
- // sign = -1;
- }
- long double result = 0;
- int iter = 0;
- long double next = num;
- while (true) {
- result += next;
- // result += pow(-1, iter) * pow(num, iter * 2 + 1) / factorial(1LL * iter * 2 + 1);
- iter++;
- // long double next = pow(-1, iter) * pow(num, iter * 2 + 1) / factorial(1LL * iter * 2 + 1);
- next *= num * -num / ((2.0 * iter) * (2.0 * iter + 1.0));
- if (fabs(next) <= e)
- break;
- }
- // cout << fixed;
- cout << setprecision(-log10(e));
- //if (fabs(result) <= e) {
- // cout << 0 << "\n";
- //}
- //else
- cout << sign * result << "\n";
- cout << iter;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement