懒得码字了:

题目链接: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的更多相关文章

  1. CH Round #56 - 国庆节欢乐赛解题报告

    最近CH上的比赛很多,在此会全部写出解题报告,与大家交流一下解题方法与技巧. T1 魔幻森林 描述 Cortana来到了一片魔幻森林,这片森林可以被视作一个N*M的矩阵,矩阵中的每个位置上都长着一棵树 ...

  2. 二模13day1解题报告

    二模13day1解题报告 T1.发射站(station) N个发射站,每个发射站有高度hi,发射信号强度vi,每个发射站的信号只会被左和右第一个比他高的收到.现在求收到信号最强的发射站. 我用了时间复 ...

  3. BZOJ 1051 最受欢迎的牛 解题报告

    题目直接摆在这里! 1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 4438  Solved: 2353[S ...

  4. 习题:codevs 2822 爱在心中 解题报告

    这次的解题报告是有关tarjan算法的一道思维量比较大的题目(真的是原创文章,希望管理员不要再把文章移出首页). 这道题蒟蒻以前做过,但是今天由于要复习tarjan算法,于是就看到codevs分类强联 ...

  5. 习题:codevs 1035 火车停留解题报告

    本蒟蒻又来写解题报告了.这次的题目是codevs 1035 火车停留. 题目大意就是给m个火车的到达时间.停留时间和车载货物的价值,车站有n个车道,而火车停留一次车站就会从车载货物价值中获得1%的利润 ...

  6. 习题: codevs 2492 上帝造题的七分钟2 解题报告

    这道题是受到大犇MagHSK的启发我才得以想出来的,蒟蒻觉得自己的代码跟MagHSK大犇的代码完全比不上,所以这里蒟蒻就套用了MagHSK大犇的代码(大家可以关注下我的博客,友情链接就是大犇MagHS ...

  7. 习题:codevs 1519 过路费 解题报告

    今天拿了这道题目练练手,感觉自己代码能力又增强了不少: 我的思路跟别人可能不一样. 首先我们很容易就能看出,我们需要的边就是最小生成树算法kruskal算法求出来的边,其余的边都可以删掉,于是就有了这 ...

  8. NOIP2016提高组解题报告

    NOIP2016提高组解题报告 更正:NOIP day1 T2天天爱跑步 解题思路见代码. NOIP2016代码整合

  9. LeetCode 解题报告索引

    最近在准备找工作的算法题,刷刷LeetCode,以下是我的解题报告索引,每一题几乎都有详细的说明,供各位码农参考.根据我自己做的进度持续更新中......                        ...

随机推荐

  1. PTA----7-3树的遍历

    7-3 树的遍历 (25 分) 给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列.这里假设键值都是互不相等的正整数. 输入格式: 输入第一行给出一个正整数N(≤30),是二叉树中结点的个数 ...

  2. Spring Boot 2.x 缓存应用 Redis注解与非注解方式入门教程

    Redis 在 Spring Boot 2.x 中相比 1.5.x 版本,有一些改变.redis 默认链接池,1.5.x 使用了 jedis,而2.x 使用了 lettuce Redis 接入 Spr ...

  3. matplotlib学习(2)

    1.legend的学习(图例)1.1 代码 import matplotlib.pyplot as plt import numpy as np x=np.linspace(-3,3,50) #从-1 ...

  4. 在java的静态方法中访问类的实例成员

    直接来看代码: public class Example { int x = 3;//类的实例变量,初始化值为3 static int y = 4;//类的静态变量,初始化值为4 public sta ...

  5. c语言中的qsort用法

    1.首先了解 int cmp(const void* a, const void* b) 表示声明cmp函数,其返回值为int型,参数为两个不可修改(const)的void型指针 2.函数原型 函数声 ...

  6. Pako.js压缩解压,vue压缩解压,前后端之间高效数据传输

    项目开发中常常会遇到前后端之间有大量数据传输占用带宽导致页面响应慢的问题,这时候我们可以考虑使用Pako.js对信息进行压缩之后传输. 我在前端使用的是vue-element-admin前端框架.框架 ...

  7. C++11常用特性介绍——constexpr变量

    一.constexpr变量 1)将变量声明为constexpr类型以便由编译器来验证变量的值是否为一个常量表达式,声明为constexpr的变量一定是一个常量,而且必须用常量表达式来初始化,如: in ...

  8. idea提示非法字符

    问题: 解决方法: 将编码格式UTF-8+BOM文件转为普通的UTF-8文件. 一.简单方法,在AS右下角,将编码改为GBK,再转为UTF-8,可以解决. 二.可以用EditPlus 1.将文件用Ed ...

  9. day03-Mybatis中一对一、一对多、多对多查询

    一对一查询 一对一的表结构: my_account表: my_user表: 一对一是互相的,A可以找到B,B也可以找到A,方法是一样的,这里就只写一个方向的 通过my_count表找到my_user表 ...

  10. 牛客网Sql

    牛客网Sql: 1.查询最晚入职的员工信息  select * from employees where hire_date =(select max(hire_date) from employee ...