\(\color{brown}{Link}\)

\(\text{Solution:}\)

\(Question:\)

\(\prod_{i=1}^n \prod_{j=1}^n \frac{lcm(i,j)}{gcd(i,j)}\)

分开得:

\[\frac{\prod_{i=1}^n \prod_{j=1}^n ij}{\prod_{i=1}^{n}\prod_{j=1}^{n}gcd(i,j)^{2}}
\]

分子即为\((n!)^{2n},\)主要方法在分母。

先不看平方,有:

\[\prod_{i=1}^{n}\prod_{j=1}^{n}gcd(i,j)=\prod_{d=1}^n d^{\sum_{i=1}^n \sum_{j=1}^n [gcd(i,j)=d]}
\]

分解指数:

\[\sum_{i=1}^n \sum_{j=1}^n [gcd(i,j)=d]=\sum_{i=1}^{\frac{n}{d}}\sum_{j=1}^{\frac{n}{d}}[gcd(i,j)=1]=\sum_{i=1}^{\frac{n}{d}}2\varphi(i)-1
\]

线性出欧拉函数前缀和即可求出。

于是,分母可以枚举指数\(O(n\log n)\)算出。

注意到,模数是质数,所以根据欧拉定理,令指数对\(\varphi(mod)=mod-1\)取模即可免去\(\text{long long.}\)

注意到空间限制,线筛的\(vis\)数组可以用\(bitset.\)不要浪费多余空间。减少模的数量,以加快速度。

#include<bits/stdc++.h>
using namespace std;
const int mod=104857601;
const int MAXN=1e6+1;
bitset<MAXN+5>vis;
int p[MAXN+5],phi[MAXN+5],cnt,N,Ans,F,res;
inline int mul(int a,int b){return 1ll*a*b%mod;}
inline int add(int x,int y){return (x+y)%mod;}
void predo(){
phi[1]=1;F=1;int n=N;
for(int i=2;i<=n;++i){
F=1ll*F*i%mod;
if(!vis[i])phi[i]=i-1,p[++cnt]=i;
for(int j=1;j<=cnt&&i*p[j]<=n;++j){
vis[i*p[j]]=1;
if(i%p[j]==0){
phi[i*p[j]]=(phi[i]*p[j]);
break;
}
phi[i*p[j]]=(phi[i]*(p[j]-1));
}
}
for(int i=1;i<=n;++i){
phi[i]=phi[i]*2+phi[i-1];
phi[i]%=(mod-1);
}
}
inline int qpow(int a,int b){
res=1;
while(b){
if(b&1)res=mul(res,a);
a=mul(a,a);b>>=1LL;
}
return res;
}
int main(){
scanf("%d",&N);
predo();
F=qpow(F,2*N);Ans=1;
for(int i=2;i<=N;++i){Ans=1ll*Ans*qpow(i,phi[N/i]-1)%mod;}
Ans*=1ll;
Ans=mul(Ans,Ans);
Ans=qpow(Ans,mod-2);
Ans=mul(Ans,F);
printf("%lld\n",Ans);
return 0;
}

【题解】Product的更多相关文章

  1. LintCode 896. Prime Product 简明题解

    Given a non-repeating prime array arr, and each prime number is used at most once, find all the prod ...

  2. LeetCode Subarray Product Less Than K 题解 双指针+单调性

    题意 给定一个正整数数组和K,数有多少个连续子数组满足: 数组中所有的元素的积小于K. 思路 依旧是双指针的思路 我们首先固定右指针r. 现在子数组的最右边的元素是nums[r]. 我们让这个子数组尽 ...

  3. [LeetCode]题解(python):152-Maximum Product Subarray

    题目来源: https://leetcode.com/problems/maximum-product-subarray/ 题意分析: 给定一个数组,这个数组所有子数组都有一个乘积,那么返回最大的乘积 ...

  4. PAT甲题题解-1009. Product of Polynomials (25)-多项式相乘

    多项式相乘 注意相乘结果的多项式要开两倍的大小!!! #include <iostream> #include <cstdio> #include <algorithm& ...

  5. leetCode题解之Product of Array Except Self

    1.题目描述 2.题目分析 每个元素对应的积应该是 它 前面的每个元素的积,和后面的每个元素的积 3.代码 vector<int> productExceptSelf(vector< ...

  6. 题解 CF1206B 【Make Product Equal One】

    感谢 @一个低调的人 (UID=48417) 题目: CodeForces链接 Luogu链接 思路: 这是一个一眼题 我们不妨把所有的数都看做是\(1\)(取相应的花费,如:\(6\) 的花费就是\ ...

  7. 洛谷 P5221 Product 题解

    原题链接 庆祝!第二道数论紫题. 推式子真是太有趣了! \[\prod_{i=1}^n \prod_{j=1}^n \frac{\operatorname{lcm}(i,j)}{\gcd(i,j)} ...

  8. Codeforces Round #271 (Div. 2)题解【ABCDEF】

    Codeforces Round #271 (Div. 2) A - Keyboard 题意 给你一个字符串,问你这个字符串在键盘的位置往左边挪一位,或者往右边挪一位字符,这个字符串是什么样子 题解 ...

  9. LeetCode OJ 题解

    博客搬至blog.csgrandeur.com,cnblogs不再更新. 新的题解会更新在新博客:http://blog.csgrandeur.com/2014/01/15/LeetCode-OJ-S ...

随机推荐

  1. 笔记 | 第一个量子算法:Deutsch-Jozsa算法,非常好懂!

    <关于胡小兔的博客又诈尸了这件事> 信息物理真是难啊!上节课讲了量子计算的最基础的概念和Deutsch-Jozsa算法,我看了好几天才看懂-- 等考完试估计我就忘了,所以今天先写个博客给未 ...

  2. Layui + tp3.2 配合表格搜索

    html 部分 <!--搜索--><fieldset class="layui-elem-field layui-field-title" style=" ...

  3. github学生认证——申请学生开发包

    写在前面 申请学生认证的好处: GitHub学生的免费AWS Educate入门帐户,价值100美元. 专业的桌面IDE:IntelliJ IDEA,PyCharm等.学生的免费订阅,每年更新一次. ...

  4. 20190923-07Linux搜索查找类 000 015

    find 查找文件或者目录 find指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件显示在终端. 1.基本语法 find [搜索范围] [选项] 2.选项说明 表1-27 选项 功能 -n ...

  5. leetcode刷题-86分隔链表

    题目 给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前. 你应当保留两个分区中每个节点的初始相对位置. 示例: 输入: head = 1->4 ...

  6. 干货:不同场景容器内获取客户端源IP的方法

    摘要:客户端和容器服务器之间可能存在多种不同形式的代理服务器,那容器中如何获取到客户端真实的源ip呢? k8s已经成为当今容器化的标准,人们在享受容器带来的高效与便利的同时,也遇到一些烦恼:客户端和容 ...

  7. .net core Configuration对象

    前因:最近在阅读.net core源码,发现关于Configuration介绍的文档都比较多,但是都比较杂乱,(微软文档太官方),所以写下一些自己的感想 主要通过三种使用情况来介绍 Web应用程序使用 ...

  8. parseQueryString

    var parseQueryString = function (url) {    var reg = /([^\?\=\&]+)\=([^\?\=\&]*)/g;    var o ...

  9. 工具-Typora常用语法()+自己总结

    工具-Typora常用语法 Markdown(MD)作为目前互联网写作相当流行的一种文档撰写语言格式,深受互联网编辑者的喜爱,由此周边一些基于MD的编辑工具也随之油然而生. 作为一款免费的MD编辑器: ...

  10. React 和 VUE 的区别和优缺点

    前言 React 是由Facebook创建的JavaScript UI框架,React推广了 Virtual DOM( 虚拟 DOM )并创造了 JSX 语法.JSX 语法的出现允许我们在 javas ...