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

来写题解啦。

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

哈哈哈哈哈哈,从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. python 学习分享-paramiko模块

    paramiko模块学习分享 paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接.paramiko支持Linux, Solaris, BS ...

  2. DataSource的设置

    1.Centos和redhat,Fedora等版本无须设置,直接在cloud.cfg指定,默认是EC2 datasource_list: ['ConfigDrive','OpenStack'] 2.u ...

  3. hnust 罚时计算器

    问题 F: 罚时计算器 时间限制: 1 Sec  内存限制: 128 MB提交: 229  解决: 63[提交][状态][讨论版] 题目描述 一般 ACM程序设计比赛都是五个小时.但是比赛结束时,DB ...

  4. Android自定义控件 -Canvas绘制折线图(实现动态报表效果)

    有时候我们在项目中会遇到使用折线图等图形,Android的开源项目中为我们提供了很多插件,但是很多时候我们需要根据具体项目自定义这些图表,这一篇文章我们一起来看看如何在Android中使用Canvas ...

  5. MapReduce架构

    主从结构 主节点:JobTracker(一个) 从节点:TaskTrackers(多个) JobTracker: 接收客户提交的计算任务 把计算任务分配给TaskTrackers执行 监控TaskTr ...

  6. 【距离GDOI:131天】 后缀数组完毕

    用了近两周的时间,终于把罗神那篇后缀数组应用看完了,题目也写了一遍,T了无数次...详见前几篇博文... 后缀数组很重要的是那个height数组,可以用来做各种奇奇怪怪的东西...常用方法去是去二分, ...

  7. 【CZY选讲·棋盘迷宫】

    题目描述 一个N*M的棋盘,’.’表示可以通过,’#’表示不能通过,给出Q个询问,给定起点和终点,判断两点是否联通,如联通输出“Yes”,否则输出“No”. 数据范围 N,M <=500,Q ...

  8. Python之面向对象:闭包和装饰器

    一.闭包 1. 如果一个函数定义在另一个函数的作用域内,并且引用了外层函数的变量,则该函数称为闭包. def outter(): name='python' def inner(): print na ...

  9. forEach循环dom元素

    //让ie8支持foreach if (typeof Array.prototype.forEach != 'function') { Array.prototype.forEach = functi ...

  10. 语音提示辅助类MySoundAlertUtil

    package com.jlb.scan.util; import android.content.Context; import android.media.AudioManager; import ...