Absolute Math

定义c(n)=theprimenhave,c(1)=0,c(2)=1,c(4)=1,c(6)=2f(n)=∑d∣nμ(d)2=2c(n)f(ab)=f(a)×f(b)f(gcd(a,b))∑i=1mf(n)×f(i)f(gcd(n,i))f(n)∑d∣n1f(d)∑i=1mdf(id)[gcd(i,nd)=1]f(n)∑d∣n1f(d)∑k∣ndμ(k)∑i=1mkdf(ikd)T=kdf(n)∑T∣n∑i=1mTf(iT)∑d∣Tμ(Td)f(d)F(m,n)=∑i=1mf(in),g(n)=∑d∣nμ(nd)f(d)F(m,n)=f(n)∑T∣nF(mT,T)g(T)g=μ∗1f,是一个积性函数g(1)=1g(p)=μ(p)f(1)+μ(1)f(p)=−1+12=−12g(px)[x>=2]=μ(1)f(px)+μ(p)f(px−1)=12−12=0然后递归求解,卡卡常定义c(n) = the\ prime\ n\ have,c(1) = 0, c(2) = 1, c(4) = 1, c(6) = 2 \\ f(n) = \sum_{d \mid n} \mu(d) ^ 2 = 2 ^{c(n)} \\ f(ab) = \frac{f(a) \times f(b)}{f(gcd(a, b))}\\ \sum_{i = 1} ^{m} \frac{f(n) \times f(i)}{f(gcd(n, i))}\\ f(n) \sum_{d \mid n} \frac{1}{f(d)} \sum_{i = 1} ^{\frac{m}{d}} f(id)[gcd(i, \frac{n}{d}) = 1]\\ f(n) \sum_{d \mid n} \frac{1}{f(d)} \sum_{k \mid \frac{n}{d}} \mu(k) \sum_{i = 1} ^{\frac{m}{kd}} f(ikd)\\ T = kd\\ f(n) \sum_{T \mid n} \sum_{i = 1} ^{\frac{m}{T}}f(iT) \sum_{d \mid T} \frac{\mu(\frac{T}{d})}{f(d)}\\ F(m, n) = \sum_{i = 1} ^{m} f(in), g(n) = \sum_{d \mid n} \frac{\mu(\frac{n}{d})}{f(d)}\\ F(m, n) = f(n) \sum_{T \mid n} F(\frac{m}{T}, T) g(T)\\ g = \mu * \frac{1}{f},是一个积性函数\\ g(1) = 1\\ g(p) = \frac{\mu(p)}{f(1)} + \frac{\mu(1)}{f(p)} = -1 + \frac{1}{2} = -\frac{1}{2}\\ g(p ^ x)[x >= 2] = \frac{\mu(1)}{f(p ^ x)} + \frac{\mu(p)}{f(p ^{x - 1})} = \frac{1}{2} - \frac{1}{2} = 0\\ 然后递归求解,卡卡常\\ 定义c(n)=the prime n have,c(1)=0,c(2)=1,c(4)=1,c(6)=2f(n)=d∣n∑​μ(d)2=2c(n)f(ab)=f(gcd(a,b))f(a)×f(b)​i=1∑m​f(gcd(n,i))f(n)×f(i)​f(n)d∣n∑​f(d)1​i=1∑dm​​f(id)[gcd(i,dn​)=1]f(n)d∣n∑​f(d)1​k∣dn​∑​μ(k)i=1∑kdm​​f(ikd)T=kdf(n)T∣n∑​i=1∑Tm​​f(iT)d∣T∑​f(d)μ(dT​)​F(m,n)=i=1∑m​f(in),g(n)=d∣n∑​f(d)μ(dn​)​F(m,n)=f(n)T∣n∑​F(Tm​,T)g(T)g=μ∗f1​,是一个积性函数g(1)=1g(p)=f(1)μ(p)​+f(p)μ(1)​=−1+21​=−21​g(px)[x>=2]=f(px)μ(1)​+f(px−1)μ(p)​=21​−21​=0然后递归求解,卡卡常

/*Author : lifehappy
*/
#include <bits/stdc++.h>using namespace std;typedef long long ll;const int N = 1e7 + 10, mod = 1e9 + 7, inv2 = mod + 1 >> 1;int prime[N], sum[N], g[N], f[N], cnt;bool st[N];void init() {f[1] = g[1] = 1;for(int i = 2; i < N; i++) {if(!st[i]) {prime[++cnt] = i;f[i] = 2;g[i] = mod - inv2;}for(int j = 1; j <= cnt && 1ll * i * prime[j] < N; j++) {st[i * prime[j]] = 1;if(i % prime[j] == 0) {f[i * prime[j]] = f[i];break;}f[i * prime[j]] = f[i] * 2;g[i * prime[j]] = 1ll * g[i] * g[prime[j]] % mod;}}for(int i = 1; i < N; i++) {sum[i] = (f[i] + sum[i - 1]) % mod;}
}ll solve(int m, int n) {if(m == 0) return 0;if(m == 1) return f[n];if(n == 1) return sum[m];ll ans = 0;//发现m <= 20的时候是最优的……if(m <= 20 && 1ll * n * m < N) {for(int i=1;i<=m;i++)ans = (ans + f[i * n]) % mod;return ans;}for(int i = 1; 1ll * i * i <= n; i++) {if(n % i == 0){if(g[i]){ans = (ans + solve(m / i, i) * g[i] % mod) % mod;}if(i * i !=n && g[n / i]){ans = (ans + solve(m / (n / i), n / i)*g[n / i]) % mod;}}}return ans * f[n] % mod;
}int main() {// freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);// ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);init();int T;scanf("%d", &T);while(T--) {int n, m;scanf("%d %d", &n, &m);printf("%lld\n", solve(m, n));}return 0;
}
/*杭电的测评机比自己的老年机跑的还慢……
*/

Absolute Math (HDU 6868)相关推荐

  1. HDU 6868 Absolute Math

    Here 就放个式子和代码吧 如果有人推出了这个式子求告知 可以参考一下这个解析 该份讲解中的 g ( T ) g(T) g(T)函数就相当于我这个式子 a n s = f ( n ) ∑ g ∣ n ...

  2. TypeScript 里的 module 概念

    Modules JavaScript 在处理模块化代码方面有着悠久的历史. TypeScript 自 2012 年问世以来,已经实现了对许多这些格式的支持,但随着时间的推移,社区和 JavaScrip ...

  3. 莫比乌斯,欧拉函数题目练习(完结)

    Starttime:2020/11/16Start\ time:2020/11/16Start time:2020/11/16 Lastupdatetime:2020/11/28Last\ updat ...

  4. 杭电OJ分类题目(3)

    原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(3) HDU Computational Ge ...

  5. python Selenium

    Selenium 基本使用 In [1]:from selenium import webdriver from selenium.webdriver.common.by import By from ...

  6. Weka数据挖掘——选择属性

    如果你现在还不努力,那么将来的你会过的更加吃力. 1 选择属性 属性选择是通过搜索数据中所有可能的属性组合,以找到预测效果最好的属性子集.手工选择属性既繁琐又容易出错,为了帮助用户事项选择属性自动化. ...

  7. html,css,js写消灭小星星游戏

    首先,要写一个消灭小星星,必须考虑到有开始和重新开始两个功能,当点击小星星的时候,小星星消失,而且记录的分数随着小星星的消失而增加 HTML代码段 body{background-color: bla ...

  8. hdu 5435 A serious math problem(数位dp)

    题目链接:hdu 5435 A serious math problem 裸的数位dp. #include <cstdio> #include <cstring> #inclu ...

  9. hdu 5615 Jam's math problem(判断是否能合并多项式)

    方法一:由十字相乘相关理论我们能知道,如果要有p,k,q,m,那么首先要有解,所以b*b-4*a*c要>0,然而因为p,k,q,m是正整数,所以代表x1,x2都是有理数,有理数是什么鬼呢?就是解 ...

最新文章

  1. python操作excel之 模块 xlrd (详解)
  2. pl sql如何调试oracle存储过程,PL/SQL Developer中调试oracle的存储过程
  3. Android 设定横屏,禁止屏幕旋转,Activity重置 [更新视频播放器相关]
  4. linux yum源安装
  5. Visual Studio Team System 2008 安装失败
  6. c# Linq实现 获得某一个路径下所有文件的名(不含扩展名)
  7. 为什么 Facebook 活得春风得意,而人人网却半死不活?
  8. 推荐一些学习方面的公众号
  9. 开关电源设计入门到精通系列--序
  10. 倍福PLC通过CANOpen通信控制伺服
  11. VBlog 纯前端博客 2018.5.15更新
  12. 《自己动手写cpu》读书笔记
  13. 在编译命令行中添加 /D_SCL_SECURE_NO_DEPRECATE
  14. 2021-08-20
  15. [转]全网最!详!细!tarjan算法讲解
  16. 单臂路由+VRRP(多个vlan负载分担)
  17. quartz的使用(一)
  18. 粒子系统(二):绘制精美几何图案
  19. 英特尔采用 LLVM 作为最新 C/C++ 编译器
  20. 下一代存储技术面临市场窗口期?

热门文章

  1. ​怎么用藏头诗向女友表白......
  2. 南方人第一次见到雪的样子。。。| 今日最佳
  3. mysql数据恢复时显示多线程恢复_MySQL多线程备份恢复工具mydumper,myloder
  4. xftp6设置默认打开文件的程序_修改文件默认打开方式,不改变原图标
  5. mysql null值和空格_MySQL中NULL与空字符串空格问题
  6. oracle未找到时区,Oracle ADF 未找到时区错误
  7. 苹果手机运行python_iPhone是卖的最好的手机?用Python照样把他玩弄鼓掌之间!
  8. Excel学习使用教程
  9. Springboot后台管理(CRUD)
  10. 122. 买卖股票的最佳时机 II008(贪心算法+思路)