Absolute Math (HDU 6868)

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 havec(1)=0,c(2)=1,c(4)=1,c(6)=2f(n)=dnμ(d)2=2c(n)f(ab)=f(gcd(a,b))f(a)×f(b)i=1mf(gcd(n,i))f(n)×f(i)f(n)dnf(d)1i=1dmf(id)[gcd(i,dn)=1]f(n)dnf(d)1kdnμ(k)i=1kdmf(ikd)T=kdf(n)Tni=1Tmf(iT)dTf(d)μ(dT)F(m,n)=i=1mf(in),g(n)=dnf(d)μ(dn)F(m,n)=f(n)TnF(Tm,T)g(T)g=μf1g(1)=1g(p)=f(1)μ(p)+f(p)μ(1)=1+21=21g(px)[x>=2]=f(px)μ(1)+f(px1)μ(p)=2121=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;
}
/*杭电的测评机比自己的老年机跑的还慢……
*/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/314041.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2019-03-10-算法-进化(只出现一次的数字)

题目描述 给定一个非空整数数组&#xff0c;除了某个元素只出现一次以外&#xff0c;其余每个元素均出现两次。找出那个只出现了一次的元素。 说明&#xff1a; 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗&#xff1f; 示例 1: 输入: [2,2,1] 输出: 1…

自由源自于自律 及其他三则分享

Office 365 官方公众号的新创深度内容推荐竹板这么一打呀&#xff0c;别的咱不夸&#xff0c;单说我们的Office 365官方公众号&#xff08;“微软Office365”&#xff09;&#xff0c;近一段时间来在内容创作上面有一些新的突破——推出了一个关于探讨大脑及思维运作的专题。请…

CF871E Restore the Tree(构造/哈希)

CF871E Restore the Tree 对于一个n个点的树&#xff0c;给定k个点以及这k个点到n个点的距离&#xff0c;然后构造出一颗合法的树。如果不存在合法的树输出-1&#xff0c;任意输出一组解即可。 首先处理在关键点链上的节点&#xff0c;对于两个关键点&#xff0c;有且仅有他们…

Battlestation Operational HDU 6134

Battlestation Operational ∑i1n∑j1i⌈ij⌉[gcd(i,j)1]∑i1n∑j1i(ij1)[gcd(i,j)1]−∑i1n∑j1i[gcd(i,j)1,j∣i]∑i1n∑j1i(ij1)[gcd(i,j)1]−n∑i1n∑j1iij[gcd(i,j)1]∑i1n∑j1i[gcd(i,j)1]−n∑i1n∑j1iij[gcd(i,j)1]∑i1ϕ(i)−n∑i1n∑j1iij[gcd(i,j)1]∑d1nμ(d)∑i1n…

2019-03-11-算法-进化(求众数)

题目描述 给定一个大小为 n 的数组&#xff0c;找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的&#xff0c;并且给定的数组总是存在众数。 示例 1: 输入: [3,2,3] 输出: 3示例 2: 输入: [2,2,1,1,1,2,2] 输出: 2思路&#xff1a…

淘宝商品数据库设计的一些经验

前言这几个月都在做一个通过淘宝API线下管理淘宝店的系统&#xff0c;学习了很多东西&#xff0c;这里想对淘宝商品表设计用自己的想法表现出来&#xff0c;如果你觉得很扯淡&#xff0c;可以写下自己的看法.OK&#xff0c;切入正题.淘宝的商品这块的复杂程度&#xff0c;是我见…

AT2645 [ARC076D] Exhausted?(Hall定理推论/线段树+扫描线)

AT2645 [ARC076D] Exhausted? 对于一个二分图左边点连接的是右边点的一个前缀和一个后缀&#xff0c;求解最大匹配。 首先不能直接求解最大匹配&#xff0c;但是我们可以利用Hall定理的推论求解 ∣U∣−max(∣X∣−N(∣X∣))|U|-max(|X|-N(|X|))∣U∣−max(∣X∣−N(∣X∣))…

2019-03-11-算法-进化(搜索二维矩阵II)

题目描述 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列每列的元素从上到下升序排列 示例: 现有矩阵 matrix 如下&#xff1a; [[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9…

A and B and Lecture Rooms

A and B and Lecture Rooms 题意要求我们找有多少个点iii满足dis(i,x),dis(i,y)dis(i, x), dis(i, y)dis(i,x),dis(i,y)&#xff0c;输出点iii的数量即可。 首先特判无解的情况就是dis(x,y)dis(x, y)dis(x,y)为奇数时&#xff0c;接下来我们讨论有解的情况&#xff0c;大致分…

观星(计算几何/凸包/多边形面积)

观星 对于平面上有n个点分为三类&#xff0c;要求寻找一个三角形&#xff0c;三个顶点分别属于这三类&#xff0c;求解最大面积。 N<3000 首先考虑到O(n2)O(n^2)O(n2)的枚举&#xff0c;然后对于另外一种考虑这个点的位置&#xff0c;显然它应该在凸包上&#xff0c;因为我…

DevOps之持续集成SonarQube代码质量扫描

SonarQube是一个用于代码质量检测管理的开放平台&#xff0c;可以集成不同的检测工具&#xff0c;代码分析工具&#xff0c;以及持续集成工具。SonarQube 并不是简单地把不同的代码检查工具结果直接显示在 Web 页面上&#xff0c;而是通过不同的插件对这些结果进行再加工处理&a…

2019-03-12-算法-进化(合并两个有序数组)

题目描述 给定两个有序整数数组 nums1 和 nums2&#xff0c;将 nums2 合并到 nums1 中&#xff0c;使得 num1 成为一个有序数组。 说明: 初始化 nums1 和 nums2 的元素数量分别为 m 和 n你可以假设 nums1 有足够的空间&#xff08;空间大小大于或等于 m n&#xff09;来保存…

网络流与线性规划24题(写了一半,先鸽下了……)

Network-flows Ford-Fulkerson算法 typedef long long ll;const int N 1e5 10;int head[N], to[N], nex[N], flow[N], cnt;int vis[N], n, m, s, t;void add(int x, int y, int w) {to[cnt] y;nex[cnt] head[x];flow[cnt] w;head[x] cnt; }ll dfs(int rt, ll now) {if(…

数字(进制/二分/组合数学)

数字 求解满足从n1到2n中有恰好m个数字含有k个1的n&#xff0c;并求出个数 首先看到二进制的问题&#xff0c;我们需要寻找性质&#xff0c;首先考虑n1和2n的性质&#xff0c;然后这道题中我们设f(n,k)表示n1到2n中的数字含k个1的个数。 然后考虑f(n1,k)f(n,k)[2n1含k个1]&am…

.NET CORE 怎么样从控制台中读取输入流

从Console.ReadList/Read 的源码中&#xff0c;可学习到.NET CORE 是怎么样来读取输入流。也可以学习到是如何使用P/Invoke来调用系统APIConsole.ReadList 的源码为[MethodImplAttribute(MethodImplOptions.NoInlining)]public static string ReadLine(){return In.ReadLine();…

变量(网络流模型)

变量 首先最终答案的形式一定是每个变量前面对应一个系数&#xff0c;然后加上一些绝对值&#xff0c;由于每个变量只有两种取法&#xff0c;所以我们考虑使用最小割处理&#xff0c;对于每个变量建一个点分别连到S和T&#xff0c;然后表示选择取哪个&#xff0c;然后会有一边是…

使用VS Code 开发.NET CORE 程序指南

1. 前言近两年来&#xff0c;很多前端的同学都开始将 VSCode 作为前端主力开发工具&#xff0c;其丰富的扩展给程序开发尤其是前端开发带来了很多便利&#xff0c;但是作为微软主力语言的 .NET&#xff0c;却由于有宇宙第一IDE Visual Studio存在&#xff0c;很少有看到有后端同…

珂朵莉树

珂朵莉树 简要 珂朵莉树的核心操作&#xff1a;split 实际很简单&#xff0c;一个集合中&#xff0c;有一部分需要修改&#xff0c;而另一部分不需要修改&#xff0c;就把集合拆开&#xff0c;拆成两部分。 珂朵莉树的推平操作&#xff1a;assign 珂朵莉树的复杂度是由ass…

2019-03-13-算法-进化(鸡蛋掉落)

题目描述 你将获得 K 个鸡蛋&#xff0c;并可以使用一栋从 1 到 N 共有 N 层楼的建筑。 每个蛋的功能都是一样的&#xff0c;如果一个蛋碎了&#xff0c;你就不能再把它掉下去。 你知道存在楼层 F &#xff0c;满足 0 < F < N 任何从高于 F 的楼层落下的鸡蛋都会碎&…

P3810 【模板】三维偏序(陌上花开)

P3810 【模板】三维偏序&#xff08;陌上花开&#xff09; cdq分治的模板题目&#xff0c;用cdq分治处理点对的问题&#xff0c;首先按照第一维排序&#xff0c;然后分治&#xff0c;这样就可以每次考虑二三维即可&#xff0c;然后就可以利用树状数组求解了&#xff0c;然后一…