CF622F The Sum of the k-th Powers 题解

好题,基本没有高级知识但是依然能把蒟蒻如我绕的晕头转向

前置知识:拉格朗日插值

这个东西其实也比较简单,一个 n 次多项式,给你 n + 1 个平面上的点,就能求出一条图像

形式化的讲就是下面这个东西

\[f(x) = \sum_{i=0}^{N} y_i \prod_{i\ne j}\frac{x - x_i}{x_i - x_j} \]

如果有兴趣可以到我主页找详细讲推法的文章

回到本题,我么首先要证一下 \(\sum_{i = 1}^{n} i ^ k\) 是个 k + 1 次多项式

这个拿差分做一下?发现 \(\sum_{i=1}^{n} i ^ k- \sum_{i=1}^{n - 1} i ^ k\) 差分出来是一个 k 次多项式,由于差分后的次数是会降一次(这个我不知道别人是怎么理解的,我反正是从因式分解角度想了一下,发现还挺显然的,书面证明可以看洛谷题解第一篇),所以就是k + 1次多项式

那是不是就证完了,所以我们要取k + 2个点

显然,这道题平面上点的横坐标是题目中给定的 \(i\) (所以 \(x_i\) 就是 \(i\) ), 纵坐标就是 \(\sum_{i = 1}^{n} i ^k\) 。为了方便后续操作,这 k + 2 个点咱们取成连续的。那么答案就是 \(f(n)\)

\[Ans = f(n) = \sum_{i = 0}^{N} y_i \prod_{i \ne j}\frac{n - i}{i - j} \]

这个东西看着比较丑但是实际上还好,由于 k 是 1e6 范围,\(\sum_{i = 0}^{N} y_i\) 我们不用管预处理后面这个玩意即可

上面一层是 $$\prod_{i = 1}^{j - 1} (n - i) \prod_{i = j + 1}^{k + 2}(n - i)$$

下面一层是 $$\prod_{i = 1}^{j - 1} (i - j) \prod_{i = j + 1}^{k + 2}(i - j)$$

那是不是分别预处理一下这两层和那个 \(y\) 就好了。好消息,这个题的取模没有什么恶心人的点。复杂度 \(O(k\log k)\)

#include <bits/stdc++.h>#define inv(x)(Pow(x , mod - 2))
typedef long long ll;
const int N = 1e6 + 7;
const ll mod = 1e9 + 7;namespace cf662F {using namespace std;ll n , k , ans = 0 , y[N] , fac[N] , fac_[N] , factorial[N] , neg_factorial[N];inline ll Pow(ll a , ll b) {ll ans = 1;while(b) {if(b & 1) {ans = ans * a % mod;}a = a * a % mod , b >>= 1;}	return ans % mod;}void init() {fac[0] = factorial[0] = neg_factorial[0] = 1;for(register ll i = 1; i <= k + 2; ++i) {y[i] = (y[i - 1] + Pow(i , k)) % mod;fac[i] = fac[i - 1] * i % mod; factorial[i] = factorial[i - 1] * (n - i) % mod;neg_factorial[i] = (-neg_factorial[i - 1] * i + mod) % mod;}fac_[k + 3] = 1;for(register ll i = k + 2; i; --i) {fac_[i] = fac_[i + 1] * (n - i) % mod;}}void solve() {ios :: sync_with_stdio(0) , cin.tie(0) , cout.tie(0);cin >> n >> k , init();for(register ll i = 0; i <= k + 2; ++i) {ll up = factorial[i - 1] * fac_[i + 1] % mod;ll down = fac[i - 1] * neg_factorial[abs(i - k - 2)] % mod;ans = (ans % mod + y[i] * up % mod * inv(down) % mod + mod) % mod;}cout << ans << '\n';}
}int main() {cf662F :: solve(); return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/901183.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

清理 Python 包管理工具 pip 的缓存

清理 Python 包管理工具 pip 的缓存清理 Python 包管理工具 pip 的缓存 要清理 pip 的缓存,可以按照以下步骤操作(适用于 Python 的包管理工具 pip):检查 pip 缓存位置 pip 默认会将下载的包缓存在本地。你可以通过以下命令查看缓存目录: pip cache dir常见的缓存路径:Wi…

清理 Python 的包管理工具 pip 的缓存

清理 Python 的包管理工具 pip 的缓存清理 Python 的包管理工具 pip 的缓存 要清理 pip 的缓存,可以按照以下步骤操作(适用于 Python 的包管理工具 pip):检查 pip 缓存位置 pip 默认会将下载的包缓存在本地。你可以通过以下命令查看缓存目录: pip cache dir常见的缓存路径…

微服务的网关配置

微服务的网关配置 1. 网关路由 1.1 网关 1.1.1 存在问题 单体架构时我们只需要完成一次用户登录、身份校验,就可以在所有业务中获取到用户信息。而微服务拆分后,每个微服务都独立部署,这就存在一些问题:每个微服务都需要编写身份校验、用户信息获取的接口,非常麻烦。 用户…

博客图床 VsCode + PigGo + 阿里云OSS方案

关键字 写博客,图床,VsCode,PigGo,阿里云OSS 背景环境 我想把我在本地写的markdown文档直接搬到CSDN上和博客园上,但是图片上传遇到了问题。我需要手动到不同平台上传文件,非常耗费时间和经历。 为了解决这个问题,我想到了图床方案,我只需要把图片链接放到我本地写好的…

20244203张晨曦 实验一《Python程序设计》实验报告

20244203张晨曦《Python程序设计》实验一报告 课程:《Python程序设计》 班级: 2442 姓名: 张晨曦 学号:20244203 实验教师:王志强 实验日期:2025年3月18日 必修/选修: 专选课 1.实验内容 1.熟悉Python开发环境; 2.练习Python运行、调试技能; 3.编写程序,练习变量和…

Cobalt Strike基础

Cobalt Strike基础 Staged(有阶段) 在有阶段的执行方式中,分为Stager和Stage两个阶段Stager(初始执行载荷):​ 定义:Stager是Stage 1,是一个较小的、轻量级的初始执行载荷 ​ 作用:与服务端建立初始连接,并从服务器下载更大的Payload,也就是Stage2Stage(更大、…

OP222柔性振动白色料盘污染会引发的问题

下图为污损的料盘料盘污损会导致以下问题: 1.料盘里面缺料但是后面料仓就是不送料 柔性振动系统里面设置了加料个数,下图里面设置为15,表示如果相机识别区域里面的总阴影面积<15个零件面积,料仓加一次料。下图红框是识别区域,里面一道道横杠就是污损导致的阴影,这些阴…

鸿蒙特效教程05-鸿蒙很开门特效

鸿蒙特效教程05-鸿蒙很开门特效本教程适合HarmonyOS初学者,通过简单到复杂的步骤,通过层叠布局 + 动画,一步步实现这个"鸿蒙很开门"特效。本教程能收获Stack 层叠布局 animate、animateTo 动画 @State 状态管理最终效果预览 屏幕上有一个双开门,点击中间的按钮后…

An Elder Brother Is Like a Father :My True Story

![](https://img2024.cnblogs.com/blog/3617180/202503/3617180-20250318230914275-242579668.jpg)An Elder Brother Is Like a Father :My True Story In your life, do you have a very important person? Who is he/she? Why is he/she significant for you and whats you…

element-plus学习 -2025/3/18

{ ...this.form } 是 JavaScript 中的 ​扩展运算符(Spread Operator)​,它的作用是将 this.form 对象的所有属性“展开”到一个新的对象中 例如 form :{ name : , score: } 简易学生分数管理系统 element-plus实现 <!DOCTYPE html> <html lang="en">…

web161笔记(getimagesize()图片文件头检测)

这次上传失败了,尝试在头部加了图片文件头,就过去了,所以这里应该是用了getimagesize()进行检测getimagesize(): 会对目标文件的16进制去进行一个读取,去读取头几个字符串是不是符合图片的要求所以在上题的基础上都加个GIF89a图片头就可以了 GIF89a加个图⽚的头欺骗检测 .u…

MIT6.5840 2024 Spring Lab1

MIT6.5840 2024 Spring Lab1 前言本文主要作为笔记使用,这次实验基本是边查GO的语法边做的,所以代码写的不够优雅,无法充分发挥GO的一些特性,因此本文的代码实现有很大的优化空间,欢迎各位大佬指正,希望本文能给一些正在学习的小伙伴提供一些思路。最后希望小伙伴们不要抄代码,…