bzoj3601
题解:gi(pq=pqi-pqi+di
至于为什么,可以看看往上的题解
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=,D=,q=1e9+;
ll p[N],s[N],a[D][D],as[N];
ll read()
{
ll x=;char c;
for (;c<''||c>'';c=getchar());
for (;c>=''&&c<='';c=getchar())x=x*+c-;
return x;
}
ll ksm(ll x,ll y)
{
ll ret=;
for (;y;y/=,(x*=x)%=q)
if (y&)(ret*=x)%=q;
return ret;
}
void elm(ll n)
{
for (ll i=;i<n;i++)
{
if (!a[i][i])
for (ll j=i+;j<=n;j++)
if (a[j][i])
{
for (ll k=;k<=n+;k++) swap(a[j][k],a[i][k]);
break;
}
ll inv=ksm(a[i][i],q-);
for (ll j=i+;j<=n;j++)
if (a[j][i])
{
ll tmp=(a[j][i]*inv)%q;
for (ll k=;k<=n+;k++)
a[j][k]=((a[j][k]-a[i][k]*tmp+q)%q+q)%q;
}
}
for (ll i=n;i;i--)
{
if (!a[i][i])
for (ll j=i-;j;j--)
if (a[j][i])
{
for (ll k=;k<=n+;k++) swap(a[j][k],a[i][k]);
break;
}
ll inv=ksm(a[i][i],q-);
for (ll j=i-;j;j--)
if (a[j][i])
{
ll tmp=(a[j][i]*inv)%q;
for (ll k=;k<=n+;++k)
a[j][k]=((a[j][k]-a[i][k]*tmp+q)%q+q)%q;
}
}
}
int main()
{
ll d=read(),w=read();
for (ll i=;i<=w;i++) p[i]=read(),s[i]=read();
ll sum=;d++;
for (ll i=;i<=d;i++)
{
(sum+=ksm(i,d-))%=q;
ll tmp=;
for (ll j=;j<=d;j++) (tmp*=i)%=q,a[i][j]=tmp;
a[i][d+]=sum;
}
elm(d);
for (ll i=;i<=d;i++) as[i]=(a[i][d+]*ksm(a[i][i],q-))%q;
ll ans=;
for (ll i=;i<=d;i++)
{
ll g=;
for (ll j=;j<=w;j++)
{
ll tmp=(ksm(p[j],s[j]*i)-ksm(p[j],s[j]*i+d-i-)+q)%q;
(g*=tmp)%=q;
}
(ans+=(as[i]*g))%=q;
}
printf("%lld",ans);
}
bzoj3601的更多相关文章
- 【BZOJ3601】一个人的数论(数论)
[BZOJ3601]一个人的数论(数论) 题面 BZOJ 怎么这图片这么大啊... 题解 要求的是\(\displaystyle \sum_{i=1}^n [gcd(i,n)=1]i^d\) 然后把\ ...
- BZOJ3601 一个人的数论 【数论 + 高斯消元】
题目链接 BZOJ3601 题解 挺神的 首先有 \[ \begin{aligned} f(n) &= \sum\limits_{x = 1}^{n} x^{d} [(x,n) = 1] \\ ...
- 【BZOJ3601】一个人的数论 高斯消元+莫比乌斯反演
[BZOJ3601]一个人的数论 题解:本题的做法还是很神的~ 那么g(n)如何求呢?显然它的常数项=0,我们可以用待定系数法,将n=1...d+1的情况代入式子中解方程,有d+1个方程和d+1个未知 ...
- BZOJ3601 一个人的数论 莫比乌斯反演、高斯消元/拉格朗日插值
传送门 题面图片真是大到离谱-- 题目要求的是 \(\begin{align*}\sum\limits_{i=1}^N i^d[gcd(i,n) == 1] &= \sum\limits_{i ...
- BZOJ3601 一个人的数论
Description 定义 \[ f_k(n)=\sum_{\substack{1\leq i\leq n\\gcd(i,n)=1}}i^k \] 给出\(n=\prod_{i=1}^w p_i^{ ...
- BZOJ3601. 一个人的数论(狄利克雷卷积+高斯消元)及关于「前 $n$ 个正整数的 $k$ 次幂之和是关于 $n$ 的 $k+1$ 次多项式」的证明
题目链接 https://www.lydsy.com/JudgeOnline/problem.php?id=3601 题解 首先还是基本的推式子: \[\begin{aligned}f_d(n) &a ...
- 【bzoj3601】一个人的数论 莫比乌斯反演+莫比乌斯函数性质+高斯消元
Description Sol 这题好难啊QAQ 反正不看题解我对自然数幂求和那里是一点思路都没有qwq 先推出一个可做一点的式子: \(f(n)=\sum_{k=1}^{n}[(n,k)=1]k^d ...
- [bzoj3601] 一个人的数论 [莫比乌斯反演+高斯消元]
题面 传送门 思路 这题妙啊 先把式子摆出来 $f_n(d)=\sum_{i=1}^n[gcd(i,n)==1]i^d$ 这个$gcd$看着碍眼,我们把它反演掉 $f_n(d)=\sum_{i=1}^ ...
- 【bzoj3601】一个人的数论 莫比乌斯反演+高斯消元
题目描述 题解 莫比乌斯反演+高斯消元 (前方高能:所有题目中给出的幂次d,公式里为了防止混淆,均使用了k代替) #include <cstdio> #include <cstrin ...
随机推荐
- 用Win32 实现进度条
转载:http://www.cctry.com/thread-238862-1-1.html #include <windows.h> #include <commctrl.h> ...
- cogs 1962. [HAOI2015]树上染色
★★☆ 输入文件:haoi2015_t1.in 输出文件:haoi2015_t1.out 简单对比 时间限制:1 s 内存限制:256 MB [题目描述] 有一棵点数为N的树,树边有边 ...
- 三种常用的js数组去重方法
第一种是比较常规的方法 思路: 1.构建一个新的数组存放结果 2.for循环中每次从原数组中取出一个元素,用这个元素循环与结果数组对比 3.若结果数组中没有该元素,则存到结果数组中 Array.pro ...
- luogu P2114 [NOI2014]起床困难综合症 位运算 二进制
建议去uoj那里去测,数据比较强 位运算的题目,就得一位一位的分开考虑 然后枚举初始值的最高位是0 是1 的最终攻击 (二进制内)最高位是1肯定比次位是1次次位是1次次次位是1···的大吧,显然 然后 ...
- c#传统SqlTransaction事务和TransactionScope事务
事务有很多种,看了一些关于事务的问题,这里做下笔记····· 事务时单个的工作单位.如果某一事务成功,则在该事务中进行的所有数据更改均会提交,成为数据库中永久的组成部分.若果事务遇到错误,则必须取消或 ...
- Hadoop MapReduce编程 API入门系列之Crime数据分析(二十五)(未完)
不多说,直接上代码. 一共12列,我们只需提取有用的列:第二列(犯罪类型).第四列(一周的哪一天).第五列(具体时间)和第七列(犯罪场所). 思路分析 基于项目的需求,我们通过以下几步完成: 1.首先 ...
- 01_Flume基本架构及原理
Flume消息收集系统,在整个系统架构中的位置 Flume概况1) Apache软件基金会的顶级项目2)存在两个大的版本:Flume 0.9.x(Flume-OG,original generatio ...
- 111python
补充一句,为兼容平台文件地址可以这么写: file = os.path.join('dir', 'file_name')
- MVC ---- Linq查询
Linq查询:编译后,会生成对应的标准查询运算符!所以说,Linq只是类似与Sql的一种更加友好的语法而已: public class LinqDemo{ public static void Tes ...
- UI 自动化测试 Macaca测试框架 安装时遇到的log
https://macacajs.github.io/zh/environment-setup macaca run -d ./macaca-test/desktop-browser-sample.t ...