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 ...
随机推荐
- VC++ 获取文件属性创建时间、修改时间和访问时间
转载:http://blog.sina.com.cn/s/blog_66bf8d8301014ikd.html WIN32_FIND_DATA结构 关于文件的全部属性信息,总计有以下以下9 种:文件的 ...
- Python3基础 str while+iter+next 字符串的遍历
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- Python3基础 str format 四舍六入五凑偶 保留一位小数
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- git 指定要提交的ssh key
问题描述 ssh具有-i选项,用于告知在验证时使用哪个私钥文件: -i identity_file Selects a file from which the identity (private ke ...
- opencv-python 学习初探1
本人是windows10 ,Python3.6 32位.因为业务需要,需要实现一批图片处理,对比PIL和OpenCV后,选择后者.此文为菜鸟记录,大手子们求放过. 1.下载. 直接 pip insta ...
- org.apache.shiro.session.InvalidSessionException: java.lang.IllegalStateException: getAttribute: Session already invalidated] with root cause
1.遇到以下异常,找了好长时间,终于解决,报的异常如下: 七月 07, 2017 3:02:16 下午 org.apache.catalina.core.StandardWrapperValve in ...
- python 命令行升级pip
import os import sys path = '"'+os.path.dirname(sys.executable)+'\\scripts\\pip" install - ...
- ros 使用命令测试topic
发布话题 $ rostopic pub -r /chatter std_msgs/String "test" 输出数据: $ rostopic echo /chatter data ...
- python 时间元组转时间戳
#!/usr/bin/python # -*- coding: UTF- -*- import time print(time.mktime((, , , , , , , , ))) 输出 15382 ...
- Qt5_QString_测试
ZC: 下面的测试效果看,可以只是用 “QString.isEmpty()” 或者 “QString == ""”来判断 QString是否为 空或者NULL . 1. 1.1. ...