首页 > 其他分享 >[HDU 3483] A Very Simple Problem 题解

[HDU 3483] A Very Simple Problem 题解

时间:2023-10-26 19:55:59浏览次数:31  
标签:HDU limits Very 题解 sum binom

题目描述

快速求出下面式子的值:

\[\left(\sum\limits_{k=1}^{N}k^{x}x^{k}\right)\bmod M \]

其中 \(1 ≤ N, M ≤ 2\times 10^9\), 并且 \(1 ≤ x ≤ 50\)。

题解 (solution)

对于该类题目,\(N\) 很大,而 \(x\) 很小,考虑矩阵快速幂优化。
对于每一个 \(N\) 的答案,我们用 \(f(N)\) 来表示,于是有(忽略取模运算):

\[f(n+1)=f(n)+(n+1)^{x}x^{n+1} \]

因为 \(x\) 很小,而我们所希望的递推式是不包含项数的,所以把 \((n+1)^{x}\) 用二项式定理暴力拆开,于是有:

\[f(n+1)=f(n)+x\sum\limits_{i=0}^{x}\binom{x}{i}n^{i}x^{n} \]

所以最后答案为:

\[\begin{align} f(n)&=x\sum\limits_{i=1}^{n}{\sum\limits_{j=0}^{x}\binom{x}{j}(i-1)^{j}x^{i-1}}\\ &=x\sum\limits_{i=0}^{n-1}{\sum\limits_{j=0}^{x}\binom{x}{j}i^{j}x^{i}}\\ &=x\sum\limits_{i=0}^{x}{\binom{x}{i}\sum\limits_{j=0}^{n-1}j^{i}x^{j}} \end{align} \]

观察到式子后面一坨与原式相似,于是定义 \(g(n,y)\) 表示 \(\sum\limits_{i=1}^{n}i^{y}x^{i}\),则递推式为

\[g(n,y)=x\sum\limits_{i=0}^{y}\binom{y}{i}(g(n-1,i)+[i=0]) \]

直接矩阵快速幂求出 \(g(n,x)\) 即可,时间复杂度 \(\mathcal O(x^3\log n)\)。

标签:HDU,limits,Very,题解,sum,binom
From: https://www.cnblogs.com/cqbzljh/p/17790230.html

相关文章

  • P5537 【XR-3】系统设计 题解-哈希+线段树二分
    20231026P5537【XR-3】系统设计题解-哈希+线段树二分这个东西怎么会和哈希有关?!直接寄。Statement这个系统首先需要输入一棵\(n\)个点的有根树和一个长度为\(m\)的序列\(a\),接下来需要实现\(q\)个操作。操作分两种:1xlr表示设定起点为有根树的节点\(x\),接下来......
  • CF888E题解
    分析看到\(n\leq35\)的数据范围就想到了meet-in-middle。先爆搜出对于\(1\sim\frac{n}{2}\)和\(\frac{n}{2}\simn\)两个下标范围内在模意义下所有的和。然后用一个常见trick,就是枚举第二个部分的和,然后匹配第一个部分的和的最优解。显然匹配有两种情况,一种是......
  • chrome新版本http自动跳转https问题解决
    虽然是个好功能,但是部分内网业务还没做好https兼容,有的时候手工访问,还是变成https 解决办法:chrome://flags/找到:HTTPSUpgrades,修改disabled,重启解决,当然这个需要需要用户去调整,真正还需要服务去兼容https  ......
  • 在使用 Unity 2022 打包安卓项目时,遇到 gradle 无法访问或下载超级慢最终超时出错的问
    一般表现是打包最后一步会等待超长时间,最后报错,错误信息:PickedupJAVA_TOOL_OPTIONS:-Dfile.encoding=UTF-8FAILURE:Buildfailedwithanexception.*Whatwentwrong:Aproblemoccurredconfiguringrootproject'Gradle'.>Couldnotresolveallartifactsfor......
  • CCC 2023 题解 和 思考过程
    Trianglane水题,只要分情况判断中间和两侧有边叠牢的情况,每次减2#include<iostream>#include<cstdlib>#include<cstdio>#include<cmath>#include<algorithm>#include<cstring>usingnamespacestd;typedeflonglongll;constintN=200010......
  • 「题解」Codeforces Round 905 (Div. 3)
    before终于有一篇题解是一次性更所有题的了。A.MorningProblemA.MorningSol&Code根据题意模拟即可。#include<bits/stdc++.h>typedeflonglongll;intmin(inta,intb){returna<b?a:b;}intmax(inta,intb){returna>b?a:b;}intT;int......
  • CF888C题解
    分析容易想到可以枚举每个字母,分别求其最小\(k\)取\(\min\)。思考对于一个\(k\),如何判其不合法。容易想到如果存在一个没有这个字符的长度大于等于\(k\)的子段,那么这个\(k\)就不合法。那么我们就知道如何求最小合法\(k\)了。找到最长的没有这个字符的子段,其长度加......
  • CF888A题解
    分析因为一个数不可能同时大于并小于它两边的数,所以两种数的集合不存在交集。所以分别扫一遍两种数的个数加在一起即可。代码#include<iostream>usingnamespacestd;constexprintMAXN(1000007);inta[MAXN];intn,ans;inlinevoidread(int&temp){cin>>t......
  • Redisson分布式锁主从一致性问题解决
    Redis联锁联锁(RedissonMultiLock)对象可以将多个RLock对象关联为一个联锁,实现加锁和解锁功能。每个RLock对象实例可以来自于不同的Redisson实例。如果负责储存分布式锁的某些Redis节点宕机以后,而且这些锁正好处于锁住状态,就会出现死锁问题。为了避免这种情况的发生,Redisson内部提供......
  • AGC304Ex Constrained Topological Sort 题解
    AT一个直接的想法是拓扑排序时从小到大标号:每次在入度为\(0\)的点中找到\(l_{u}\lei\)且\(r_{u}\)最小的\(u\),令\(p_{u}=i\)问题是如果\(r_{u}\)很大,那么\(u\)被标号的优先级很低,会连累\(u\)的后继中\(r\)较小的点做法是倒着拓扑一遍,令\(r_{u}\leftarrow\m......