当前位置: 首页 > news >正文

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^{a_i}\),求\(f_k(n)\)\(1\leq w\leq 1000, 1\leq q_i,a_i\leq 10^9\)。保证\(p_i\)都为质数且互不相同。

Solution

\(g_k(n)=\sum_{i=1}^ni^k\),则
\[ \begin{aligned} g_k(n)&=\sum_{i=1}^ni^k\\ &=\sum_{d|n}\sum_{\substack{1\leq i\leq n\\gcd(i,n)=d}}i^k\\ &=\sum_{d|n}d^k\sum_{\substack{1\leq i\leq \frac nd\\gcd\left(i,\frac nd\right)=d}}i^k\\ &=\sum_{d|n}d^kf_k\left(\frac nd\right) \end{aligned} \]
也即\(g_k(n) = (n^k) * f_k(n)\)\(*\)表示狄利克雷卷积)。

由于\((n^k)*(\mu(n)n^k)=[n=1]\),所以\(f_k(n)=(\mu(n)n^k)*g_k(n)\)

显然\(g_k(n)\)可以写成\(\sum_{i=1}^{k+1}a_in^i\),那么
\[ \begin{aligned} f_k(n)&=\sum_{d|n}\mu(d)d^k\sum_{i=1}^{k+1}a_i\left(\frac nd\right)^i\\ &=\sum_{i=1}^{k+1}a_i\sum_{d|n}\mu(d)d^k\left(\frac nd\right)^i\\ &=\sum_{i=1}^{k+1}a_in^i\sum_{d|n}\mu(d)d^{k-i}\\ \end{aligned} \]
\(\sum_{d|n}\mu(d)d^{k-i}\)显然是积性函数,所以对每个质因子\(O(1)\)求出之后乘起来即可。

所有\(a_i\)提前高消出来就行了。

Code

#include <algorithm>
#include <cstdio>
#include <cstring>
const int D = 105;
const int mod = 1000000007;
typedef long long LL;
inline LL pow_mod(LL a, LL b) {
  LL ans = 1;
  for (a %= mod, (b += mod - 1) %= mod - 1; b; b >>= 1, a = a * a % mod)
    if (b & 1) ans = ans * a % mod;
  return ans;
}
inline LL inv(LL a) { return pow_mod(a, -1); }
int d;
LL a[D];
void solve() {
  static LL A[D][D];
  LL t = 0;
  for (int i = 0; i <= d; ++i) {
    LL j = 1;
    for (int k = 0; k <= d; ++k) A[i][k] = j = j * (i + 1) % mod;
    A[i][d + 1] = ((t += d ? A[i][d - 1] : 1) %= mod);
  }
  for (int i = 0; i <= d; ++i) {
    int j = i;
    while (!A[j][i]) ++j;
    for (int k = i; k <= d + 1; ++k) std::swap(A[i][k], A[j][k]);
    LL inv1 = inv(A[i][i]);
    for (int j = i; j <= d + 1; ++j)
      A[i][j] = A[i][j] * inv1 % mod;
    for (int j = i + 1; j <= d; ++j)
      for (int k = d + 1; k >= i; --k)
        A[j][k] = (A[j][k] - A[j][i] * A[i][k] % mod) % mod;
  }
  for (int i = d; ~i; --i) {
    a[i + 1] = A[i][d + 1];
    for (int j = i - 1; ~j; --j)
      A[j][d + 1] = (A[j][d + 1] - A[j][i] * A[i][d + 1] % mod) % mod;
  }
}
const int N = 1050;
int p[N], q[N];
int main() {
  int w;
  scanf("%d%d", &d, &w);
  solve();
  LL ans = 0, n = 1;
  for (int i = 0; i < w; ++i) {
    scanf("%d%d", &p[i], &q[i]);
    n = n * pow_mod(p[i], q[i]) % mod;
  }
  LL y = 1;
  for (int i = 1; i <= d + 1; ++i) {
    y = y * n % mod;
    LL t = a[i] * y % mod;
    for (int j = 0; j < w; ++j)
      t = t * (1 - pow_mod(p[j], d - i)) % mod;
    ans = (ans + t) % mod;
  }
  printf("%d\n", (int)((ans + mod) % mod));
  return 0;
}

转载于:https://www.cnblogs.com/y-clever/p/8513606.html

相关文章:

  • 亚马逊推出FreeTime Android应用程序,开放适合儿童资源
  • SpaceX发射机密间谍卫星,系与美国防部签订的第一单合作
  • 无人机给你送餐了,快来签收!
  • 作为“云计算”的延伸,“雾计算”只是一种炒作吗?
  • RT-Thread的线程(任务)处理 rt_thread_create/rt_thread_init区别
  • 命令收集
  • 为实现全局化产品线布局,瑞芯微宣布旗下芯片RK3399 Linux系统开源
  • mongodb--安装和初步使用教程
  • WIFI渗透从入门到精通
  • Webscan360的防御与绕过
  • 装饰器
  • vue属性用法
  • netbeans 正则替换
  • Go语言学习笔记(八)golang 操作 Redis Mysql RabbitMQ
  • [转]23种设计模式全解析
  • Akka系列(七):Actor持久化之Akka persistence
  • Android Studio:GIT提交项目到远程仓库
  • GraphQL学习过程应该是这样的
  • hadoop集群管理系统搭建规划说明
  • Idea+maven+scala构建包并在spark on yarn 运行
  • java取消线程实例
  • leetcode-27. Remove Element
  • 闭包,sync使用细节
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • !!java web学习笔记(一到五)
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • $().each和$.each的区别
  • (007)XHTML文档之标题——h1~h6
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (十八)三元表达式和列表解析
  • (实战篇)如何缓存数据
  • (转)为C# Windows服务添加安装程序
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .Net 4.0并行库实用性演练
  • .net MySql
  • .net 程序 换成 java,NET程序员如何转行为J2EE之java基础上(9)
  • /var/spool/postfix/maildrop 下有大量文件
  • :中兴通讯为何成功
  • @Import注解详解
  • @Not - Empty-Null-Blank
  • [ Linux 长征路第五篇 ] make/Makefile Linux项目自动化创建工具
  • [AX]AX2012 R2 出差申请和支出报告
  • [C++]类和对象【上篇】
  • [ERROR] 不再支持目标选项 5。请使用 7 或更高版本
  • [ERROR]-Error: failure: repodata/filelists.xml.gz from addons: [Errno 256] No more mirrors to try.
  • [Git 1]基本操作与协同开发
  • [iphone-cocos2d]关于Loading的若干处理和讨论
  • [noip2015 d1t2] 信息传递
  • [python] 之 函数简介
  • [socket 弹 shell] msg_box3