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

来写题解啦。

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

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

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

代码,嘻嘻:

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+;
const int mod=;
ll qpow(ll x, int q){
ll res = ;
while(q){
if(q%) res = res*x%mod;
x = x*x%mod;
q /= ;
}
return res;
}
int main(){
int n,m;
ll ans;
while(~scanf("%d%d",&n,&m)){
if(m>n)printf("0\n");
else if(n%==&&m%==||n%==&&m%==)printf("0\n");
else if(n==&&m==)printf("1\n");
else if(m==){
if(n%==)printf("0\n");
else if(n%==){
if((n/)%==)printf("998244352\n");
else printf("1\n");
}
}
else{
ans=;
for(int i=n-m+;i<=n+m-;i+=)
ans=(ans*i)%mod;
ans=(ans*n)%mod;
ll temp=;
for(int i=;i<=m;i++)
temp=(i*temp)%mod;
ll cnt;
cnt=qpow(temp,mod-);
//cout<<"aaaaaaaaaaaaaaaa"<<endl;
ans=ans*cnt%mod;
ans=((n-m)/)%==?ans:-ans;
ans=(ans+mod)%mod;
printf("%lld\n",ans%mod);
}
}
return ;
}

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

今天来写题解啦。

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.

样例输入

2 0
2 1
2 2

样例输出

998244352
0
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。

代码解释:

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+;
const int mod=;
ll qpow(ll x, int q){ //乘法逆元
ll res = ;
while(q){
if(q%) res = res*x%mod;
x = x*x%mod;
q /= ;
}
return res;
}
int main(){
int n,m;
ll ans;
while(~scanf("%d%d",&n,&m)){
if(m>n)printf("0\n"); //x的次方数最大为n次,超过了就不存在
else if(n%==&&m%==||n%==&&m%==)printf("0\n"); //n和m奇偶性不同的时候结果为0
else if(n==&&m==)printf("1\n"); //如果n和m为0,结果为1
else if(m==){ //如果m为0,就是有规律的
if(n%==)printf("0\n");//如果为奇数,就是0
else if(n%==){ //如果为偶数
if((n/)%==)printf("998244352\n");//除以2之后如果为奇数就是-1,(-1+mod)%mod结果就是这个数
else printf("1\n");//除以2之后如果为偶数就是1
}
}
else{ //其他的通过公式进行计算
ans=;
for(int i=n-m+;i<=n+m-;i+=) //优化之后只需要进行部分操作就可以
ans=(ans*i)%mod;//二阶乘
ans=(ans*n)%mod;//公式
ll temp=;
for(int i=;i<=m;i++)
temp=(i*temp)%mod;//m的阶乘
ll cnt;
cnt=qpow(temp,mod-);//m的阶乘的逆元
//cout<<"aaaaaaaaaaaaaaaa"<<endl;
ans=ans*cnt%mod;//将结果进行相乘
ans=((n-m)/)%==?ans:-ans;//判断正负号
ans=(ans+mod)%mod;
printf("%lld\n",ans%mod);
}
}
return ;
}

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

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

加油_(:з」∠)_

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

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

    题目链接:哈哈哈哈哈哈 _(:з」∠)_ _(:з」∠)_ _(:з」∠)_ _(:з」∠)_ _(:з」∠)_ 哈哈哈哈哈哈,从9月16日打了这个题之后就一直在补这道题,今天终于a了,哈哈哈哈哈哈. ...

  2. 计蒜客 31458.Features Track-滚动数组+STL(map)连续计数 (ACM-ICPC 2018 徐州赛区网络预赛 F)

    F. Features Track Morgana is learning computer vision, and he likes cats, too. One day he wants to f ...

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

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

  4. 计蒜客 28206.Runway Planning (BAPC 2014 Preliminary ACM-ICPC Asia Training League 暑假第一阶段第一场 F)

    F. Runway Planning 传送门 题意简直就是有毒,中间bb一堆都是没用的,主要的意思就是度数大于180度的就先减去180度,然后除以10,四舍五入的值就是答案.如果最后结果是0就输出18 ...

  5. 2019计蒜客信息学提高组赛前膜你赛 #2(TooYoung,TooSimple,Sometimes Naive

    计蒜客\(2019CSP\)比赛第二场 巧妙爆零这场比赛(我连背包都不会了\(QWQ\) \(T1\) \(Too\) \(Young\) 大学选课真的是一件很苦恼的事呢! \(Marco\):&qu ...

  6. 计蒜客 作弊揭发者(string的应用)

    鉴于我市拥堵的交通状况,市政交管部门经过听证决定在道路两侧安置自动停车收费系统.当车辆驶入车位,系统会通过配有的摄像头拍摄车辆画面,通过识别车牌上的数字.字母序列识别车牌,通过连接车管所车辆信息数据库 ...

  7. 计蒜客的一道题dfs

    这是我无聊时在计蒜客发现的一道题. 题意: 蒜头君有一天闲来无事和小萌一起玩游戏,游戏的内容是这样的:他们不知道从哪里找到了N根不同长度的木棍, 看谁能猜出这些木棍一共能拼出多少个不同的不等边三角形. ...

  8. 计蒜客模拟赛5 D2T1 成绩统计

    又到了一年一度的新生入学季了,清华和北大的计算机系同学都参加了同一场开学考试(因为两校兄弟情谊深厚嘛,来一场联考还是很正常的). 不幸的是,正当老师要统计大家的成绩时,世界上的所有计算机全部瘫痪了. ...

  9. 计蒜客 等边三角形 dfs

    题目: https://www.jisuanke.com/course/2291/182238 思路: 1.dfs(int a,int b,int c,int index)//a,b,c三条边的边长, ...

随机推荐

  1. Erlang OTP设计原则Gen_Fsm行为[转]

    转自: http://www.cnblogs.com/yourihua/archive/2012/05/13/2497776.html 1. Fsm 称为 有限状态机,举个例子,游戏中的怪物称为NPC ...

  2. C++树的建立和遍历

    #include<iostream.h> typedef char TElemtype; typedef struct Btree { TElemtype data; struct Btr ...

  3. sshd_config_for_centos

    # $OpenBSD: sshd_config,v // :: djm Exp $ # This is the sshd server system-wide configuration file. ...

  4. Python——数据类型初步:Numbers

    本篇内容 今天主要简介了几种数字的数据类型和一些稍微比较常用的方法. • int • bytes • float • bool • complex • long Python里面的使用变量的时候并不需 ...

  5. Linux开启MySQL远程连接

    Linux开启MySQL远程连接的设置步骤 . MySQL默认root用户只能本地访问,不能远程连接管理MySQL数据库,那么Linux下如何开启MySQL远程连接?设置步骤如下: 1.GRANT命令 ...

  6. linux中帮助参数 man whatis which info区别?

    在linux终端,面对命令不知道怎么用,或不记得命令的拼写及参数时,我们需要求助于系统的帮助文档: linux系统内置的帮助文档很详细,通常能解决我们的问题,我们需要掌握如何正确的去使用它们: 在只记 ...

  7. Java UDP的简单实例以及知识点简述

    UDP的实现 Java中实现UDP协议的两个类,分别是DatagramPacket数据包类以及DatagramSocket套接字类. 其与TCP协议实现不同的是: UDP的套接字DatagramSoc ...

  8. npm理解

    NPM就是一个下载器,通过它可以下载到几乎所有你需要的代码资源.它的成功,包括如下几个方面: 海量资源:NPM背后有数以万计的开源免费模块. 高效利用:作为开发者,只需要敲几个简单的命令就可以将这些开 ...

  9. Android初学者必知会的编程规范

    在安卓学习中,我们首先需要掌握的就是Android编程的一些规范,只有掌握了这些规范,后面的深入学习才能开展.今天小编在一个Android培训网站上搜罗了一些,Android初学者不得不知的开发规范, ...

  10. GDB调试——经验总结

    GDB调试的一些很有用经验: 1. gdb调试,如果有参数,可以在run命令后加,也可以使用set args :如果是使用gdbserver+gdb的远程调试方式,参数可以在gdbserver后面加. ...