2017 ACM-ICPC 亚洲区(西安赛区)网络赛 F.Trig Function(论文+组合数)
来源:互联网 发布:win7不允许安装软件 编辑:程序博客网 时间:2024/05/16 08:09
传送门
Given two integers
Input Format
Multiple test cases (no more than
Each test case contains one line consisting of two integers
Output Format
Output the answer in a single line for each test case.
样例输入
2 0
2 1
2 2
样例输出
998244352
0
2
题目大意:
给出
解题思路:
首先给出论文:传送门
然后就根据论文进行计算就OK了,需要特判两个点。
给出组合数公式:
1)
2)
代码:
#include <iostream>#include <string.h>#include <string>#include <algorithm>#include <stdio.h>#include <stdlib.h>#include <math.h>#include <map>using namespace std;typedef long long LL;const int MAXN = 1e4+5;const double PI = acos(-1);const double eps = 1e-8;const LL MOD = 998244353;LL Pow(LL a, LL b){ LL ans = 1; while(b){ if(b & 1) ans = ans * a % MOD; b>>=1; a = a * a % MOD; } return ans;}LL Inv[MAXN];void Init(){ Inv[0] = Inv[1] = 1; for(int i=2; i<MAXN; i++) Inv[i] = (MOD - MOD / i) * Inv[MOD % i] % MOD; for(int i=2; i<MAXN; i++) Inv[i] = Inv[i]*Inv[i-1]%MOD;}int main(){ //freopen("C:/Users/yaonie/Desktop/in.txt", "r", stdin); //freopen("C:/Users/yaonie/Desktop/out.txt", "w", stdout); Init(); LL n, m; while(~scanf("%lld%lld", &n, &m)){ if(((n&1)&&!(m&1)) || (!(n&1)&&(m&1))){ puts("0"); continue; } LL k = (n-m)/2; if(m == 0){ if(k & 1) puts("998244352"); else puts("1"); continue; } if(n == m){ printf("%lld\n",Pow(2LL, n-1)); continue; } LL t1 = min(k, n-2*k), t2 = min(k-1, n-2*k); LL ans1 = Inv[t1], ans2 = Inv[t2]; for(LL i=1; i<=t1; i++){ LL tmp = (n-k-i+1)%MOD; ans1 = ans1*tmp%MOD; } for(LL i=1; i<=t2; i++){ LL tmp = (n-k-i)%MOD; ans2 = ans2*tmp%MOD; } LL ans = (ans1 + ans2) % MOD; if(k & 1) ans=-ans; ans = (ans+MOD)%MOD; ans = ans*Pow(2LL, n-1-2*k)%MOD; printf("%lld\n",ans); } return 0;}
阅读全文
0 0
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 F.Trig Function(论文+组合数)
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 F Trig Function(数论,组合数)
- 计蒜客 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 cos(nx)
- 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(数学公式推理)
- python学习2
- PAT-1132 Cut Integer (整数分割)
- [线段树] HDU 1754
- HDU1081 最大字段和 压缩数组
- angular js 日程安排表
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 F.Trig Function(论文+组合数)
- LeetCode 203. Remove Linked List Elements
- Hadoop常见问题①
- 【C++基础学习】C++中union结构
- 解决maven下载jar慢:maven使用阿里的maven镜像
- HTML5+CSS3
- Unix路径简化(模拟题)
- Could not resolve all dependencies for configuration ':app:_googleplayDebugApkCopy'.
- 无限轮播