HỆ SỐ KHAI TRIỂN MACLAURIN HÀM SIN
Task
Hãy lập trình tính hệ số của x n,(n ∈ N) trong khai triển Maclaurin của hàm số sin x. Input Một dòng duy nhất chứa số nguyên n.
Output In ra kết quả chính xác hệ số của x n trong khai triển Maclaurin của hàm sin x dưới dạng phân số (a/b, a ∈ Z, b ∈ N).
Samples
Input 3
Output -1/6
Code:
#include <bits/stdc++.h>
using namespace std;
long long GiaiThua(int n)
{
if(n == 0)
return 1;
if(n > 0)
return n*GiaiThua(n-1);
}
long long mux(int a , int b)
{
long long tich = 1;
for(int i = 0 ; i < b ; i++)
tich = tich * a;
return tich;
}
int UCLN(int a , int b)
{
while(1)
{
if(abs(a) > abs(b))
a = abs(a) - abs(b);
if(abs(b) > abs(a))
b = abs(b) - abs(a);
if(abs(a) == abs(b))
break;
if(a == 0 || b == 0)
break;
}
if(a == 0 || b == 0)
return abs(a - b);
else
return abs(a);
}
void PhanSo(int a , int b)
{
if(a == 0 && abs(b) != 0)
cout<<0;
if(b == 0)
cout<<"INVALID";
else
{
int s = a / UCLN(a,b);
int p = b / UCLN(a,b);
if(abs(p) != 1)
{
if(a > 0 && b > 0)
cout<<s<<"/"<<p;
else if(a < 0 && b < 0)
cout<<abs(s)<<" "<<abs(p);
else if(a < 0 || b < 0)
cout<<"-"<<abs(s)<<"/"<<abs(p);
}
if(abs(p) == 1 && a != 0)
{
if(a > 0 && b > 0)
cout<<s;
else if(a < 0 && b < 0)
cout<<abs(s);
else if(a < 0 || b < 0)
cout<<"-"<<abs(s);
}
}
}
int main()
{
int n,a,b;
cin>>n;
if(n >= 0)
{
double sum = 0 , tich = 1;
int i = 0;
while((2*i+1) <= n)
{
a = mux(-1,i);
b = GiaiThua(2*i+1);
i++;
}
PhanSo(a,b);
}
return 0;
}