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 ...
随机推荐
- The way to Go(7): 常量
Reference: Github: Go Github: The way to Go 常量 常量使用关键字 const 定义,用于存储不会改变的数据. const identifier [type] ...
- Ubuntu 下 su:authentication failure的解决办法
Ubuntu下使用 su 切换到超级用户时候遇到下面的问题 su: Authentication failure 解决办法: $ sudo passwd root Enter new UNIX pas ...
- NS3 一个小问题
可能会在执行./waf 命令的时候遇到这个问题,比如我想编译 /home/wasdns/Documents/NS3/ns-3.17/scratch 目录下的一个文件:newnsthree.cpp 编译 ...
- 模拟C#的事件添加和删除
从<C# Via CLR>中的演化的一个小demo,探索事件的添加和删除原理,简单明了: using System; using System.Collections.Generic; u ...
- go 修改字符串
在Go中字符串是不可变的,例如下面的代码编译时会报错:cannot assign to s[] var s string = "hello" s[] = 'c' 但如果真的想要修改 ...
- 使用R内置函数操作数据框
我们已经学习了数据框的基础,这里回顾一下用于筛选数据框的内置函数.尽管数据框本质上是一个由向量构成的列表,由于各列长度相同,所以可以将其看作矩阵进行访问和操作.选择满足特定条件的行,需要为 [ ] 的 ...
- template.js 模版内调用外部JS方法
template.js 一款 JavaScript 模板引擎,简单,好用.提供一套模板语法,用户可以写一个模板区块,每次根据传入的数据,生成对应数据产生的HTML片段,渲染不同的效果.模版定义如下: ...
- Java知识集锦
Java知识集锦 一.Java程序基础 1.1 开发和运行环境 1.2 Java语言概述 二.Java语法基础 2.1 基础类型和语法 2.2 对象和类型 2.3 包和访问控制 三.数据类型及类型转换 ...
- JDBC 与 Bean Shell的使用(二)获取值,并且断言
这里我们使用的断言方式是BeanShell断言,做一个新增功能的接口测试, 1.发一个post请求,新增测试数据,然后做一个返回数据的响应断言-------大部分人都可以实现这个功能 2.如果是后台业 ...
- Greengenes Database(16S)
The Greengenes Database Release 13_5 这是16S的一个非常重要的数据库 The Greengenes Database, a public resource sin ...