2017 ACM-ICPC 亚洲区(西安赛区)网络赛 F. Trig Function cos(nx)
来源:互联网 发布:ecshop微商城源码 编辑:程序博客网 时间:2024/06/04 21:41
( holds for all x.
Given two integers n and m, you need to calculate the coefficient of xm in f(x), modulo 998244353.
Input Format
Multiple test cases (no more than 100).
Each test case contains one line consisting of two integers n and m.
1≤n≤109,0≤m≤104.
Output Format
Output the answer in a single line for each test case.
样例输入
2 02 12 2
样例输出
99824435202
题目来源
2017 ACM-ICPC 亚洲区(西安赛区)网络赛
就阶乘那里 因为大的一部分可以把小的一部分约掉,然后经过观察得到只有k=0的时候n+2k-2 n-2k的大小是 下面大 上面小,
同理 就特判下k=0就完了。
公式题,记录一下结论
//china no.1#pragma comment(linker, "/STACK:1024000000,1024000000")#include <vector>#include <iostream>#include <string>#include <map>#include <stack>#include <cstring>#include <queue>#include <list>#include <stdio.h>#include <set>#include <algorithm>#include <cstdlib>#include <cmath>#include <iomanip>#include <cctype>#include <sstream>#include <functional>#include <stdlib.h>#include <time.h>#include <bitset>using namespace std;#define pi acos(-1)#define s_1(x) scanf("%d",&x)#define s_2(x,y) scanf("%d%d",&x,&y)#define s_3(x,y,z) scanf("%d%d%d",&x,&y,&z)#define PI acos(-1)#define endl '\n'#define srand() srand(time(0));#define me(x,y) memset(x,y,sizeof(x));#define foreach(it,a) for(__typeof((a).begin()) it=(a).begin();it!=(a).end();it++)#define close() ios::sync_with_stdio(0); cin.tie(0);#define FOR(x,n,i) for(int i=x;i<=n;i++)#define FOr(x,n,i) for(int i=x;i<n;i++)#define fOR(n,x,i) for(int i=n;i>=x;i--)#define fOr(n,x,i) for(int i=n;i>x;i--)#define W while#define sgn(x) ((x) < 0 ? -1 : (x) > 0)#define bug printf("***********\n");#define db double#define ll long long#define mp make_pair#define pb push_backtypedef long long LL;const int INF=0x3f3f3f3f;const LL LINF=0x3f3f3f3f3f3f3f3fLL;const int dx[]={-1,0,1,0,1,-1,-1,1};const int dy[]={0,1,0,-1,-1,1,-1,1};const int maxn=1e5+10;const int maxx=2e5+100;const double EPS=1e-8;const double eps=1e-8;const int mod=998244353;template<class T>inline T min(T a,T b,T c) { return min(min(a,b),c);}template<class T>inline T max(T a,T b,T c) { return max(max(a,b),c);}template<class T>inline T min(T a,T b,T c,T d) { return min(min(a,b),min(c,d));}template<class T>inline T max(T a,T b,T c,T d) { return max(max(a,b),max(c,d));}template <class T>inline bool scan_d(T &ret){char c;int sgn;if (c = getchar(), c == EOF){return 0;}while (c != '-' && (c < '0' || c > '9')){c = getchar();}sgn = (c == '-') ? -1 : 1;ret = (c == '-') ? 0 : (c - '0');while (c = getchar(), c >= '0' && c <= '9'){ret = ret * 10 + (c - '0');}ret *= sgn;return 1;}inline bool scan_lf(double &num){char in;double Dec=0.1;bool IsN=false,IsD=false;in=getchar();if(in==EOF) return false;while(in!='-'&&in!='.'&&(in<'0'||in>'9'))in=getchar();if(in=='-'){IsN=true;num=0;}else if(in=='.'){IsD=true;num=0;}else num=in-'0';if(!IsD){while(in=getchar(),in>='0'&&in<='9'){num*=10;num+=in-'0';}}if(in!='.'){if(IsN) num=-num;return true;}else{while(in=getchar(),in>='0'&&in<='9'){num+=Dec*(in-'0');Dec*=0.1;}}if(IsN) num=-num;return true;}void Out(LL a){if(a < 0) { putchar('-'); a = -a; }if(a >= 10) Out(a / 10);putchar(a % 10 + '0');}void print(LL a){ Out(a),puts("");}//freopen( "in.txt" , "r" , stdin );//freopen( "data.txt" , "w" , stdout );//cerr << "run time is " << clock() << endl;LL fac[maxn];void init(){ fac[0]=1; for(int i=1;i<=maxn;i++) { fac[i]=fac[i-1]*i; fac[i]%=mod; }}void ex_gcd(LL a, LL b, LL &x, LL &y, LL &d){ if (!b) {d = a, x = 1, y = 0;} else{ ex_gcd(b, a % b, y, x, d); y -= x * (a / b); }}LL inv2(LL t, LL p){//如果不存在,返回-1 LL d, x, y; ex_gcd(t, p, x, y, d); return d == 1 ? (x % p + p) % p : -1;}int n,m;int main(){ init(); W(s_2(n,m)!=EOF) { int k,t; LL fenzi,fenmu; if(n%2==0) { if(m&1) { puts("0"); } else// m偶 { k=m/2; t=(n-2*k)/2; if(t&1) { t=-1; } else { t=1; } fenmu=fac[2*k]; LL cnt=1; for(LL i=(LL)n-2*k+2;i<=(LL)(n+2*k-2);i+=2)//上面大 { cnt=cnt*i%mod; } //cout<<cnt<<endl; if(k==0) { fenmu=fenmu*n%mod; } fenzi=(t*cnt*n%mod+mod)%mod; fenzi=fenzi*inv2(fenmu,mod)%mod; print(fenzi); } } else { if(m%2==0) { puts("0"); } else //m 奇 { k=(m+1)/2; t=(n+1-2*k)/2; if(t&1) { t=-1; } else { t=1; } fenmu=fac[2*k-1]; LL cnt=1; for(LL i=(LL)n+1-2*k+2;i<=(LL)(n+2*k-3);i+=2) { cnt=cnt*i%mod; } if(k==0) { fenmu=fenmu*(n-1)%mod*(n+1)%mod; } fenzi=(t*cnt*n%mod+mod)%mod; fenzi=fenzi*inv2(fenmu,mod)%mod; print(fenzi); } } }}
阅读全文
0 0
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 F. Trig Function cos(nx)
- 计蒜客 17119 Trig Function(2017 ACM-ICPC 亚洲区(西安赛区)网络赛 F)
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 F. Trig Function
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛: F. Trig Function
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 F. Trig Function
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 F Trig Function(数论,组合数)
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 F.Trig Function(论文+组合数)
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 F. Trig Function
- Trig Function 2017ACM-ICPC亚洲区(西安赛区)网络赛F题
- 【 2017 ACM-ICPC 亚洲区(西安赛区)网络赛】 F. Trig Function
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 F. Trig Function (切比雪夫多项式)
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 F. Trig Function (切比雪夫多项式)
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 F Trig Function(切比雪夫多项式)
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 F. Trig Function(切比雪夫定理)
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 F. Trig Function(切比雪夫多项式)
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 Trig Function
- 计蒜客17119 Trig Function 数学 2017 ACM-ICPC 亚洲区(西安赛区)网络赛
- 计蒜客-2017 ACM-ICPC 亚洲区(西安赛区)网络赛Trig Function(数学公式推理)
- 1009. 说反话 (20)
- physics HDU
- 重构第10章
- Java抽象类和抽象方法例子
- thinking in java——操作符
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 F. Trig Function cos(nx)
- 【笔记】Excel函数
- 请问为什么用spring事务管理?
- maven spring springmvc mybatis搭建
- concurrent包的实现
- 最近的error
- 强大的矩阵奇异值分解(SVD)及其应用
- 1010. 一元多项式求导 (25)
- 牛客网剑指offer编程题--从尾到头打印链表(倒序打印链表)