首页 > 编程知识 正文

cosx的转换公式,sinx +cosx转化成一个的公式

时间:2023-05-06 18:20:24 阅读:261791 作者:4133

cos(nx)有可转化公式:

转化如图:





例题:

2017 ACM-ICPC 亚洲区(西安赛区)网络赛 F 链接如下: 点击打开链接
注意:上下双阶乘可约掉一部分 除法用逆元 还有判断一下m和n的一些特殊值
代码如下:

#include<cstdio>#include<cstring>#include<cstdlib>#include<cmath>#include<algorithm>#include<iostream>using namespace std;typedef long long ll;const ll mod = 998244353;ll pow_mod(ll a,ll b){ ll ans = 1; while(b) { if(b&1) ans=(ans*a)%mod; a=(a*a)%mod; b>>=1; } return ans;}ll inv(ll x){ return pow_mod(x,mod-2);}int main(){ ll n,m,k; while(~scanf("%lld%lld",&n,&m)) { if(n<m) { printf("0n"); continue; } if(n%2==0&&m%2!=0) { printf("0n"); continue; } if(n%2!=0&&m%2==0) { printf("0n"); continue; } if(m==0&&n%2==0) { ll ans = 1; if(((n-m)%4)!=0) ans=-ans; //cout<<"ans="<<ans<<endl; printf("%lldn",(ans+mod)%mod); continue; } ll p=n; ll q=1; ll ans; for(ll i=n-m+2;i<=n+m-2;i+=2) p=(p*i)%mod; for(ll i=1;i<=m;i++) q=(q*i)%mod; ans=p*inv(q)%mod; if((n-m)%4!=0) ans=-ans; //cout<<"ans="<<ans<<endl; printf("%lldn",(ans+mod)%mod); } return 0;}







版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。