题目描述


题解

莫比乌斯反演+高斯消元

(前方高能:所有题目中给出的幂次d,公式里为了防止混淆,均使用了k代替)

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long ll;
const ll mod = 1000000007;
ll a[110][110] , p[1010] , v[1010];
ll pow(ll x , ll y)
{
ll ans = 1;
while(y)
{
if(y & 1) ans = ans * x % mod;
x = x * x % mod , y >>= 1;
}
return ans;
}
int main()
{
int d , w , i , j , k;
ll t , ans = 0;
scanf("%d%d" , &d , &w);
for(i = 1 ; i <= w ; i ++ ) scanf("%lld%lld" , &p[i] , &v[i]);
if(w == 1 && p[1] == 1)
{
puts("1");
return 0;
}
for(i = 1 ; i <= d + 1 ; i ++ )
{
a[i][0] = 1;
for(j = 1 ; j <= d + 1 ; j ++ ) a[i][j] = a[i][j - 1] * i % mod;
a[i][d + 2] = (a[i - 1][d + 2] + a[i][d]) % mod;
}
for(i = 1 ; i <= d + 1 ; i ++ )
{
for(j = i ; j <= d + 1 ; j ++ ) if(a[i][j]) break;
if(j > d + 1) continue;
for(k = i ; k <= d + 2 ; k ++ ) swap(a[i][k] , a[j][k]);
t = pow(a[i][i] , mod - 2);
for(j = i ; j <= d + 2 ; j ++ ) a[i][j] = a[i][j] * t % mod;
for(j = 1 ; j <= d + 1 ; j ++ )
if(j != i)
for(t = a[j][i] , k = i ; k <= d + 2 ; k ++ )
a[j][k] = (a[j][k] - a[i][k] * t % mod + mod) % mod;
}
for(i = 1 ; i <= d + 1 ; i ++ )
{
t = 1;
for(j = 1 ; j <= w ; j ++ )
t = t * pow(pow(p[j] , v[j]) , i) % mod * (1 - pow(p[j] , (d - i + mod - 1) % (mod - 1)) + mod) % mod;
ans = (ans + a[i][d + 2] * t) % mod;
}
printf("%lld\n" , ans);
return 0;
}

【bzoj3601】一个人的数论 莫比乌斯反演+高斯消元的更多相关文章

  1. [bzoj3601] 一个人的数论 [莫比乌斯反演+高斯消元]

    题面 传送门 思路 这题妙啊 先把式子摆出来 $f_n(d)=\sum_{i=1}^n[gcd(i,n)==1]i^d$ 这个$gcd$看着碍眼,我们把它反演掉 $f_n(d)=\sum_{i=1}^ ...

  2. BZOJ 3601 一个人的数论 ——莫比乌斯反演 高斯消元

    http://www.cnblogs.com/jianglangcaijin/p/4033399.html ——lych_cys 我还是太菜了,考虑一个函数的值得时候,首先考虑是否积性函数,不行的话就 ...

  3. BZOJ3601 一个人的数论 莫比乌斯反演、高斯消元/拉格朗日插值

    传送门 题面图片真是大到离谱-- 题目要求的是 \(\begin{align*}\sum\limits_{i=1}^N i^d[gcd(i,n) == 1] &= \sum\limits_{i ...

  4. 【BZOJ3601】一个人的数论 高斯消元+莫比乌斯反演

    [BZOJ3601]一个人的数论 题解:本题的做法还是很神的~ 那么g(n)如何求呢?显然它的常数项=0,我们可以用待定系数法,将n=1...d+1的情况代入式子中解方程,有d+1个方程和d+1个未知 ...

  5. 【bzoj3601】一个人的数论 莫比乌斯反演+莫比乌斯函数性质+高斯消元

    Description Sol 这题好难啊QAQ 反正不看题解我对自然数幂求和那里是一点思路都没有qwq 先推出一个可做一点的式子: \(f(n)=\sum_{k=1}^{n}[(n,k)=1]k^d ...

  6. BZOJ3601 一个人的数论 【数论 + 高斯消元】

    题目链接 BZOJ3601 题解 挺神的 首先有 \[ \begin{aligned} f(n) &= \sum\limits_{x = 1}^{n} x^{d} [(x,n) = 1] \\ ...

  7. BZOJ3601. 一个人的数论(狄利克雷卷积+高斯消元)及关于「前 $n$ 个正整数的 $k$ 次幂之和是关于 $n$ 的 $k+1$ 次多项式」的证明

    题目链接 https://www.lydsy.com/JudgeOnline/problem.php?id=3601 题解 首先还是基本的推式子: \[\begin{aligned}f_d(n) &a ...

  8. LOJ 2542 「PKUWC2018」随机游走 ——树上高斯消元(期望DP)+最值反演+fmt

    题目:https://loj.ac/problem/2542 可以最值反演.注意 min 不是独立地算从根走到每个点的最小值,在点集里取 min ,而是整体来看,“从根开始走到点集中的任意一个点就停下 ...

  9. BZOJ-1013 球形空间产生器sphere 高斯消元+数论推公式

    1013: [JSOI2008]球形空间产生器sphere Time Limit: 1 Sec Memory Limit: 162 MB Submit: 3662 Solved: 1910 [Subm ...

随机推荐

  1. sparkSQL中udf的使用

    在Spark中使用sql时一些功能需要自定义方法实现,这时候就可以使用UDF功能来实现 多参数支持 UDF不支持参数*的方式输入多个参数,例如String*,不过可以使用array来解决这个问题. 定 ...

  2. java之接口相关知识

    1.接口用interface来声明 //定义一个动物接口 public interface Animal{ public void eat(); public void travel(); } 2.接 ...

  3. apache的安全增强配置(使用mod_chroot,mod_security)

    apache的安全增强配置(使用mod_chroot,mod_security) 作者:windydays      2010/8/17 LAMP环境的一般入侵,大致经过sql注入,上传webshel ...

  4. cout对象一些常用方法的总结

    cout.precision(n); 这个方法的功能是,设置精度为n,返还值是上一次的设置精度. #include <iostream> using namespace std; int ...

  5. Javascript笔记部分

    写入HTML输出 document.write(“<h1>”); 改变HTML内容 x = document.getElementById(“demo”) //查找元素 后面可以.valu ...

  6. 更改zabbix-server的端口

    1.前言zabbix-server的默认端口号是10051.如果存在端口号冲突,需要更改端口号. 以下为更改端口号的步骤. 2.更改配置文件 通常用安装包,也就是yum方式部署的话,其默认的配置文件是 ...

  7. 1048: [HAOI2007]分割矩阵

    Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1184  Solved: 863[Submit][Status][Discuss] Descripti ...

  8. 【贪心 二分图 线段树】cf533A. Berland Miners

    通过霍尔定理转化判定方式的一步还是很妙的 The biggest gold mine in Berland consists of n caves, connected by n - 1 transi ...

  9. Linux-准备工作

    首先安装一个box,安装一个centos7,然后就是xshell,接下来就是 查看ip ifconfig ip addr vi /etc/sysconfig/network-scripts/ifcfg ...

  10. 最新Python3.6从入门到高级进阶实战视频教程

    点击了解更多Python课程>>> 最新Python3.6从入门到高级进阶实战视频教程 第1篇 Python入门导学 第2篇 Python环境装置 第3篇 了解什么是写代码与Pyth ...