题目描述


题解

莫比乌斯反演+高斯消元

(前方高能:所有题目中给出的幂次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;
}

最新文章

  1. 教你如何完美保存Html编辑器编辑过的文本到Word中
  2. VC 2010的重大变化
  3. 8.samba server与client配置
  4. linux驱动路径
  5. Quartz(任务调度)- Cron
  6. 判断当前设备是移动端或者PC端
  7. JavaScript 是如何工作:Shadow DOM 的内部结构 + 如何编写独立的组件!
  8. DataTable插件报错:Uncaught TypeError: Cannot read property &#39;style&#39; of undefined
  9. django基础 -- 10.form , ModelForm ,modelformset
  10. R语言reads.table 自动将字符串变成了逻辑值
  11. ISO27001信息安全管理体系
  12. Memcached服务器上实现多个实例(约约问题排查)
  13. 团队博客作业Week5 --- 团队贡献分--分配规则
  14. 试着用React写项目-利用Webpack搭环境
  15. RGB与INT类型的转换
  16. python基础===对字符串进行左右中对齐
  17. Sql server在cmd下的使用
  18. js数组、字符串常用方法
  19. js querySelector与getElementById
  20. mysql命令行导入和导出数据

热门文章

  1. UIButton 加载网络图片
  2. pip 安装出现异常
  3. bootstrapValidator 插件
  4. 搜狗浏览器特性页面JS
  5. Jquery中的CheckBox、RadioButton、DropDownList的取值赋值实现代码
  6. Load事件中控件Focus()无效解决办法
  7. 51nod——1402最大值、2479小b分糖果 (套路)
  8. Nginx 配置支持 WAF
  9. OpenFaceswap 入门教程(1):软件安装篇
  10. ubuntu crontab设置定时任务