哈哈哈哈哈哈哈哈哈哈哈哈,终于把这道题补出来了_(:з」∠)_

来写题解啦。

_(:з」∠)_ _(:з」∠)_ _(:з」∠)_ _(:з」∠)_ _(:з」∠)_

哈哈哈哈哈哈,从9月16日打了这个题之后就一直在补这道题,今天终于a了,哈哈哈哈哈哈。

先把代码贴上,有时间再好好写题解,哈哈哈哈哈哈。ヾ(◍°∇°◍)ノ゙ヾ(◍°∇°◍)ノ゙ヾ(◍°∇°◍)ノ゙ヾ(◍°∇°◍)ノ゙ヾ(◍°∇°◍)ノ゙

代码,嘻嘻:

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4. const int N=1e5+;
  5. const int mod=;
  6. ll qpow(ll x, int q){
  7. ll res = ;
  8. while(q){
  9. if(q%) res = res*x%mod;
  10. x = x*x%mod;
  11. q /= ;
  12. }
  13. return res;
  14. }
  15. int main(){
  16. int n,m;
  17. ll ans;
  18. while(~scanf("%d%d",&n,&m)){
  19. if(m>n)printf("0\n");
  20. else if(n%==&&m%==||n%==&&m%==)printf("0\n");
  21. else if(n==&&m==)printf("1\n");
  22. else if(m==){
  23. if(n%==)printf("0\n");
  24. else if(n%==){
  25. if((n/)%==)printf("998244352\n");
  26. else printf("1\n");
  27. }
  28. }
  29. else{
  30. ans=;
  31. for(int i=n-m+;i<=n+m-;i+=)
  32. ans=(ans*i)%mod;
  33. ans=(ans*n)%mod;
  34. ll temp=;
  35. for(int i=;i<=m;i++)
  36. temp=(i*temp)%mod;
  37. ll cnt;
  38. cnt=qpow(temp,mod-);
  39. //cout<<"aaaaaaaaaaaaaaaa"<<endl;
  40. ans=ans*cnt%mod;
  41. ans=((n-m)/)%==?ans:-ans;
  42. ans=(ans+mod)%mod;
  43. printf("%lld\n",ans%mod);
  44. }
  45. }
  46. return ;
  47. }

溜啦溜啦,哈哈哈哈哈哈哈哈。

今天来写题解啦。

Trig Function

1000ms

131072K

f(cos(x))=cos(n∗x) 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≤10​​9,0≤m≤10​4​​.

Output Format

Output the answer in a single line for each test case.

样例输入

  1. 2 0
  2. 2 1
  3. 2 2

样例输出

  1. 998244352
  2. 0
  3. 2

题目来源

2017 ACM-ICPC 亚洲区(西安赛区)网络赛

题目一开始没看懂什么意思,后来知道是切比雪夫多项式后,才明白题目要求的是什么。

在多项式中求xm的系数。

切比雪夫多项式, 自行百度。

切比雪夫多项式的公式:

公式1:

公式2:

切比雪夫多项式举例:

我是用公式2写的代码。

通过研究这个公式,可以发现:

1.当n和m奇偶性不同的时候,公式结果为0;

2.当m为0的时候可以发现,结果是有规律的。1,0,-1,0,4个一循环,就可以判断if(n%2==1)结果为0,

if((n/2)%2==1),结果为-1,if((n/2)%2==0)结果为1;

3.因为只有n和m同奇或者同偶,用公式计算,通过分析公式2,可以将公式简化。n!!是二阶乘的意思,就是n*(n-2)*(n-4)*(n-6)*...2;

可以将公式上下抵消一部分数,最后可以得到公式的主体部分为n*(n+m-2)*(n+m-2)*...(n-m+2)/m!;

然后就是乘法逆元,将m!逆元,乘法逆元,找度娘。

这个题写的好讨厌,老是小细节出问题,wa了好几好几发_(:з」∠)_

一开始没有将公式优化,也没有用逆元,直接就是超时_(:з」∠)_,改了无数次终于改对了,太菜了,QAQ。

代码解释:

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4. const int N=1e5+;
  5. const int mod=;
  6. ll qpow(ll x, int q){ //乘法逆元
  7. ll res = ;
  8. while(q){
  9. if(q%) res = res*x%mod;
  10. x = x*x%mod;
  11. q /= ;
  12. }
  13. return res;
  14. }
  15. int main(){
  16. int n,m;
  17. ll ans;
  18. while(~scanf("%d%d",&n,&m)){
  19. if(m>n)printf("0\n"); //x的次方数最大为n次,超过了就不存在
  20. else if(n%==&&m%==||n%==&&m%==)printf("0\n"); //n和m奇偶性不同的时候结果为0
  21. else if(n==&&m==)printf("1\n"); //如果n和m为0,结果为1
  22. else if(m==){ //如果m为0,就是有规律的
  23. if(n%==)printf("0\n");//如果为奇数,就是0
  24. else if(n%==){ //如果为偶数
  25. if((n/)%==)printf("998244352\n");//除以2之后如果为奇数就是-1,(-1+mod)%mod结果就是这个数
  26. else printf("1\n");//除以2之后如果为偶数就是1
  27. }
  28. }
  29. else{ //其他的通过公式进行计算
  30. ans=;
  31. for(int i=n-m+;i<=n+m-;i+=) //优化之后只需要进行部分操作就可以
  32. ans=(ans*i)%mod;//二阶乘
  33. ans=(ans*n)%mod;//公式
  34. ll temp=;
  35. for(int i=;i<=m;i++)
  36. temp=(i*temp)%mod;//m的阶乘
  37. ll cnt;
  38. cnt=qpow(temp,mod-);//m的阶乘的逆元
  39. //cout<<"aaaaaaaaaaaaaaaa"<<endl;
  40. ans=ans*cnt%mod;//将结果进行相乘
  41. ans=((n-m)/)%==?ans:-ans;//判断正负号
  42. ans=(ans+mod)%mod;
  43. printf("%lld\n",ans%mod);
  44. }
  45. }
  46. return ;
  47. }

作为一个数学渣,做这种题目简直要命_(:з」∠)_

这个题也没用到什么很厉害的算法,就是数学题,大佬们肯定很easy的就过了_(:з」∠)_

加油_(:з」∠)_

2017 ACM-ICPC 亚洲区(西安赛区)网络赛 F. Trig Function(切比雪夫多项式+乘法逆元)的更多相关文章

  1. 2017 ACM-ICPC 西安网络赛 F.Trig Function Chebyshev多项式

    自己太菜,数学基础太差,这场比赛做的很糟糕.本来想吐槽出题人怎么都出很数学的题,现在回过头来想还是因为自己太垃圾,竞赛就是要多了解点东西. 找$f(cos(x))=cos(nx)$中$x^m$的系数模 ...

  2. HDU 4046 Panda (ACM ICPC 2011北京赛区网络赛)

    HDU 4046 Panda (ACM ICPC 2011北京赛区网络赛) Panda Time Limit: 10000/4000 MS (Java/Others)    Memory Limit: ...

  3. 【推导】计蒜客17119 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 F. Trig Function

    题意:给你n,m,让你求cos(nx)的展开式的(cos(x))^m项的系数. 更一般的式子是这样的:. 队友的代码: #include<cstdio> #include<algor ...

  4. 2014ACM/ICPC亚洲区西安站现场赛 F color(二项式反演)

    题意:小球排成一排,从m种颜色中选取k种颜色给n个球上色,要求相邻的球的颜色不同,求可行的方案数,答案模1e9+7.T组数据,1<= n, m <= 1e9, 1 <= k < ...

  5. 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 M. Frequent Subsets Problem【状态压缩】

    2017 ACM-ICPC 亚洲区(南宁赛区)网络赛  M. Frequent Subsets Problem 题意:给定N和α还有M个U={1,2,3,...N}的子集,求子集X个数,X满足:X是U ...

  6. 2016 ACM/ICPC亚洲区青岛站现场赛(部分题解)

    摘要 本文主要列举并求解了2016 ACM/ICPC亚洲区青岛站现场赛的部分真题,着重介绍了各个题目的解题思路,结合详细的AC代码,意在熟悉青岛赛区的出题策略,以备战2018青岛站现场赛. HDU 5 ...

  7. ICPC 2018 徐州赛区网络赛

    ACM-ICPC 2018 徐州赛区网络赛  去年博客记录过这场比赛经历:该死的水题  一年过去了,不被水题卡了,但难题也没多做几道.水平微微有点长进.     D. Easy Math 题意:   ...

  8. 2016 ACM/ICPC亚洲区大连站-重现赛 解题报告

    任意门:http://acm.hdu.edu.cn/showproblem.php?pid=5979 按AC顺序: I - Convex Time limit    1000 ms Memory li ...

  9. Skiing 2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛H题(拓扑序求有向图最长路)

    参考博客(感谢博主):http://blog.csdn.net/yo_bc/article/details/77917288 题意: 给定一个有向无环图,求该图的最长路. 思路: 由于是有向无环图,所 ...

随机推荐

  1. [array] leetcode - 42. Trapping Rain Water - Hard

    leetcode - 42. Trapping Rain Water - Hard descrition Given n non-negative integers representing an e ...

  2. date 命令详解

    date - print or set the system date and time Display the current time in the given FORMAT, or set th ...

  3. C/C++调用Golang 一

    C/C++调用Golang 一 (开发环境: 操作系统: windows 7 32位操作系统 C++: visual studio 2010 Golang:go version go1.9 windo ...

  4. springBoot系列教程03:redis的集成及使用

    1.为了高可用,先安装redis集群 参考我的另一篇文章 http://www.cnblogs.com/xiaochangwei/p/7993065.html 2.POM中引入redis <de ...

  5. LeetCode题目总结(一)

    我的代码在github上,https://github.com/WINTERFELLS/LeetCode-Answers 这里只提供个人的解题思路,不一定是最好的. Problems1-20 寻找两个 ...

  6. ASP.NET MVC 5使用Swagger生成API文档

    一.安装 新建一个没有身份验证的mvc项目 - SwaggerMvc5Demo,然后添加一个名为Remote(自定义)且包含基础读写(不想手写)的ApiController   开源地址:https: ...

  7. amaze UI 笔记 - JS

    导航添加依据 http://amazeui.org/javascript 下面内容属学习笔记,如有理解偏差和错误请留言相告,感谢!* =(官网这块写的很详细) 一 .UI增强 1.警告框 显示可关闭的 ...

  8. Effective Java 第三版——17. 最小化可变性

    Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...

  9. word在线问题

    1.js代码如下 var sdata = "";$(function(){ var pathdoc = path.split("."); var explore ...

  10. 关于 for 循环与 循环嵌套

    FOR循环精讲 > 1.初步结识 for是写出题的重要组成部分之一,每个题如果没有for循环根本是无法做出来的,可见for循环在c++语言中是有多么重要,那么for的格式是怎样的呢?? for( ...