解题报告:CF622F
懒得码字了:
题目链接:CF622F
很简单的数论题,紫题显然是过了些,(不要说...
对于这个式子,是一个\(k+1\)次的多项式,插\(k+2\)次值就好了,烦人的是处理逆元,我的费马小定理显然是\(O(logp)\)的,可以用拓欧,听说还有\(O(k)\)的算法,我似乎感觉不太可能(我太弱了)。
预处理处阶乘,前、后缀积数组即可,复杂度\(O(klogk+klogp)\),可以通过此题(跑得飞快.jpg)。
\(Code:\)
#include<iostream>
#include<cstdio>
#define mod 1000000007
using namespace std;
long long n,k;
long long fac[1000005],y[1000005];
long long pre[1000005],suf[1000005];
long long ans=0;
long long quickpow(long long a,long long b)
{
long long base=a,ans=1;
while(b)
{
if(b&1) ans=1ll*base*ans%mod;
b>>=1;
base=1ll*base*base%mod;
}
return ans%mod;
}
inline int judge(long long x){if(x&1) return -1;else return 1;}
int main()
{
scanf("%lld%lld",&n,&k);
if(!k)
{
printf("%lld\n",n);
return 0;
}
if(n<=k+2)
{
for(long long i=1;i<=n;i++) ans=(ans+quickpow(i,k))%mod;
printf("%lld\n",ans%mod);
return 0;
}
fac[0]=1,y[0]=0;
pre[0]=1,suf[k+3]=1;
for(int i=1;i<=k+1;i++) fac[i]=1ll*fac[i-1]*i%mod;
for(int i=1;i<=k+2;i++) y[i]=(y[i-1]+quickpow(i,k))%mod;
for(int i=1;i<=k+1;i++) pre[i]=1ll*pre[i-1]*(n-i)%mod;
for(int i=k+2;i>1;i--) suf[i]=1ll*suf[i+1]*(n-i)%mod;
for(int i=1;i<=k+2;i++)
{
long long sum=1;
sum=fac[i-1]*fac[k+2-i]*judge(k+2-i)%mod;
if(judge(k+2-i)==1) sum=1ll*quickpow(sum,mod-2);
else sum=-1ll*(quickpow(-sum,mod-2));
sum=(sum+mod)*y[i]%mod;
sum=sum*pre[i-1]%mod;
sum=sum*suf[i+1]%mod;
ans=(ans+sum)%mod;
}
printf("%lld\n",ans%mod);
return 0;
}
没开\(long long\)爆掉了
(我还知道\(O(k^3)\)的做法呢)————差分法,可以拿部分分,比正解还高深\(qwq\)。
解题报告:CF622F的更多相关文章
- CH Round #56 - 国庆节欢乐赛解题报告
最近CH上的比赛很多,在此会全部写出解题报告,与大家交流一下解题方法与技巧. T1 魔幻森林 描述 Cortana来到了一片魔幻森林,这片森林可以被视作一个N*M的矩阵,矩阵中的每个位置上都长着一棵树 ...
- 二模13day1解题报告
二模13day1解题报告 T1.发射站(station) N个发射站,每个发射站有高度hi,发射信号强度vi,每个发射站的信号只会被左和右第一个比他高的收到.现在求收到信号最强的发射站. 我用了时间复 ...
- BZOJ 1051 最受欢迎的牛 解题报告
题目直接摆在这里! 1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4438 Solved: 2353[S ...
- 习题:codevs 2822 爱在心中 解题报告
这次的解题报告是有关tarjan算法的一道思维量比较大的题目(真的是原创文章,希望管理员不要再把文章移出首页). 这道题蒟蒻以前做过,但是今天由于要复习tarjan算法,于是就看到codevs分类强联 ...
- 习题:codevs 1035 火车停留解题报告
本蒟蒻又来写解题报告了.这次的题目是codevs 1035 火车停留. 题目大意就是给m个火车的到达时间.停留时间和车载货物的价值,车站有n个车道,而火车停留一次车站就会从车载货物价值中获得1%的利润 ...
- 习题: codevs 2492 上帝造题的七分钟2 解题报告
这道题是受到大犇MagHSK的启发我才得以想出来的,蒟蒻觉得自己的代码跟MagHSK大犇的代码完全比不上,所以这里蒟蒻就套用了MagHSK大犇的代码(大家可以关注下我的博客,友情链接就是大犇MagHS ...
- 习题:codevs 1519 过路费 解题报告
今天拿了这道题目练练手,感觉自己代码能力又增强了不少: 我的思路跟别人可能不一样. 首先我们很容易就能看出,我们需要的边就是最小生成树算法kruskal算法求出来的边,其余的边都可以删掉,于是就有了这 ...
- NOIP2016提高组解题报告
NOIP2016提高组解题报告 更正:NOIP day1 T2天天爱跑步 解题思路见代码. NOIP2016代码整合
- LeetCode 解题报告索引
最近在准备找工作的算法题,刷刷LeetCode,以下是我的解题报告索引,每一题几乎都有详细的说明,供各位码农参考.根据我自己做的进度持续更新中...... ...
随机推荐
- Python web在IIS上发布方法和原理
Python web应用想要发布使用iis发布有两种方式,这篇文章就为大家介绍一下这两种方式的具体实现: 1.配置HttpPlatform程序 HttpPlatform 模块将套接字连接直接传递到独立 ...
- /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found的解决办法
#############################BEGIN############################# strings /usr/lib64/libstdc++.so.6.0. ...
- ES6-使用模板字符串完成字符串拼接
var obj = {name:'tom',age:11}; //es5的字符串拼接比较麻烦 var str = '姓名是:'+obj.name+' '+'年龄是:'+obj. ...
- 小程序云函数调用http或https请求外部数据
参考网址 https://blog.csdn.net/qiushi_1990/article/details/101220920 小程序云函数调用http或https请求外部数据 原创编程小石头 发布 ...
- Codeforces Round #606 (Div. 2) - E. Two Fairs(割点+dfs)
题意:给你一张无向连通图,对于求有多少对$(x,y)$满足互相到达必须经过$(a,b)$,其中$x\neq a,x\neq b,y\neq a,y\neq b$ 思路:显然$a,b$都必须为割点,所以 ...
- 【layui】提交表单
1 <script type="text/javascript"> layui.use(['form', 'layer', 'jquery'], function () ...
- Fedora26下Mysql改密码Unknown column 'password' in 'field list'
本意向修改一个用户的密码,网上搜到的命令为如下 1 mysql> update user set password=password(“新密码”) where user=”用户名”; 执行后报错 ...
- Fedora26安装Mysql实记(包含yum换源教程)
课程实验中有一项是安装Hive,这个过程中需要安装Mysql. 在安装Mysql耗费了好多时间,总是报错数据仓库同步失败什么的. 输入yum install mysql 就提示错误,连接不上数据源.该 ...
- ha-wordy-Write-up
信息收集 下载地址:点我 bilibili:点我 ➜ ~ nmap -sn 192.168.116.1/24 Starting Nmap 7.80 ( https://nmap.org ) at 20 ...
- np.ndarray与PIL.Image对象相互转换
Image对象有crop功能,也就是图像切割功能,但是使用opencv读取图像的时候,图像转换为了np.adarray类型,该类型无法使用crop功能,需要进行类型转换,所以使用下面的转换方式进行转换 ...