求∏i=1n(∑j=1igcd(i,j))mod109+7(n≤5∗107)\prod_{i=1}^n (\sum_{j=1}^igcd(i,j))\mod 10^9+7(n\le 5*10^7)∏i=1n​(∑j=1i​gcd(i,j))mod109+7(n≤5∗107)

本来想出一道莫比乌斯反演的题目的,但是∑\sum∑太简单了,就换成了∏\prod∏试试看,结果发现一些奇怪的东西…

定义f(n)=∑i=1ngcd(i,n)f(n)=\sum_{i=1}^n gcd(i,n)f(n)=∑i=1n​gcd(i,n),则有:

{f(pk)=1(pk−pk−1)+p(pk−1−pk−2)...+pk=k(pk−pk−1)+pk(枚举gcd大小并求出次数)f(n)=f(p)f(q)(p⊥q)\begin{cases} f(p^k)=1(p^k-p^{k-1})+p(p^{k-1}-p^{k-2})...+p^k=k(p^k-p^{k-1})+p^k(枚举gcd大小并求出次数)\\f(n)=f(p)f(q)(p\bot q)\end{cases}{f(pk)=1(pk−pk−1)+p(pk−1−pk−2)...+pk=k(pk−pk−1)+pk(枚举gcd大小并求出次数)f(n)=f(p)f(q)(p⊥q)​

第二个式子是证明它是积性函数的:

令n=pcqd(p⊥q)n=p^c q^d(p\bot q)n=pcqd(p⊥q),则需要证明∑i=1ngcd(i,n)=∑j=1pcgcd(pc,j)∑k=1qdgcd(qd,k)\sum_{i=1}^n gcd(i,n)=\sum_{j=1}^{p^c} gcd(p^c,j)\sum_{k=1}^{q^d} gcd(q^d,k)∑i=1n​gcd(i,n)=∑j=1pc​gcd(pc,j)∑k=1qd​gcd(qd,k).

此时我们计算一下paqb(a≤c,b≤d)p^aq^b(a\le c,b\le d)paqb(a≤c,b≤d)作为gcd的出现次数.

从左边看则为npaqb−⌊npa+1qb⌋−⌊npaqb+1⌋+⌊npa+1qb+1⌋\dfrac{n}{p^aq^b}-\lfloor\dfrac{n}{p^{a+1}q^b}\rfloor-\lfloor\dfrac{n}{p^aq^{b+1}}\rfloor+\lfloor\dfrac{n}{p^{a+1}q^{b+1}}\rfloorpaqbn​−⌊pa+1qbn​⌋−⌊paqb+1n​⌋+⌊pa+1qb+1n​⌋.

从右边看则为(pc−a−⌊pc−a−1⌋)(qd−b−⌊qd−b−1⌋)(p^{c-a}-\lfloor p^{c-a-1}\rfloor)(q^{d-b-\lfloor q^{d-b-1}\rfloor})(pc−a−⌊pc−a−1⌋)(qd−b−⌊qd−b−1⌋).

很明显,拆开后是等价的.

那么我们只要求出f(pk)f(p^k)f(pk)及其出现次数,用一下快速幂即可.

本算法的瓶颈在于线性筛,因为快速幂是高度压缩了运算次数.

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
const int mod=1e9+7,N=5e7+10;
ll ans;
ll power_mod(ll a,ll b) {ll c=1;a%=mod;while(b) {if(b&1)c=c*a%mod;a=a*a%mod;b=b>>1;}return c;
}
void calc(int x,ll y,ll p) {int cnt=0;do {x/=p;cnt++;ans=ans*power_mod(y*p+cnt*y*(p-1),x-x/p)%mod;y*=p;}while(x>=p);
}
int n,prime[3001144],tot;bool v[N];
void get_prime() {for(int i=2;i<=n;i++) {if(!v[i])prime[++tot]=i,calc(n,1,i);for(int j=1;i*prime[j]<=n;j++) {v[i*prime[j]]=1;if(i%prime[j]==0)break;}}
}
int main() {//  freopen("a.in","r",stdin);
//  freopen("a.out","w",stdout);scanf("%d",&n);ans=1;get_prime();printf("%lld\n",ans);return 0;
}

caioj 1290: 之乎者也相关推荐

  1. MYSQL 创建用户1290错误_rhel6 mysql skip-grant-tables 添加用户报错 ERROR 1290

    不小心把数据库密码忘掉了, 这个时候我们只需要在数据库的配置文件里面添加 skip-grant-tables 然后重新启动服务,再登录数据库就不要我们输入密码了 这个时候我成功登录数据,可是不小心又把 ...

  2. linux时mysql报1290_rhel6 mysql skip-grant-tables 添加用户报错 ERROR 1290

    不小心把数据库密码忘掉了, 这个时候我们只需要在数据库的配置文件里面添加 skip-grant-tables 然后重新启动服务,再登录数据库就不要我们输入密码了 这个时候我成功登录数据,可是不小心又把 ...

  3. mysql导出 error1290_解决MySQL导出数据到文件报错:ERROR 1290

    环境: MySQL 8.0 操作: 1. 使用SELECT .. INTO OUTFILE ,想把数据导出到txt文件中,报如下错误: ERROR 1290 (HY000): The MySQL se ...

  4. 解决关于 ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it....报错

    mysql> create user 'zhilong'@'%' identified by '123456'; ERROR 1290 (HY000): The MySQL server is ...

  5. ACM学习历程—Hihocoder 1290 Demo Day(动态规划)

    http://hihocoder.com/problemset/problem/1290 这题是这次微软笔试的第三题,过的人比第一题少一点,这题一眼看过去就是动态规划,不过转移方程貌似不是很简单,调试 ...

  6. LeetCode Algorithm 1290. 二进制链表转整数

    1290. 二进制链表转整数 Ideas 偷了个懒,首先用string类型的str把链表的所有元素都串起来,然后直接用stoi转成int类型,直接AC. Code C++ #include <s ...

  7. mysql error 1148_MYSQL入坑第一弹--------ERROR 1148 (42000)ERROR 1290 (HY000)

    这是因为: 服务器端,local_infile默认开启:客户端,local_infile默认关闭,因此用的时候需要打开. On the server side: The local_infile sy ...

  8. mysql创建用户报错ERROR 1290

    使用navicat 给mysql创建用户报错ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv op ...

  9. mysql 载入主体时出错_mysql遇到load data导入文件数据出现1290错误的解决方案

    错误出现情景 在cmd中使用mysql命令,学生信息表添加数据.使用load data方式简单批量导入数据. 准备好文本数据: xueshengxinxi.txt 文件  数据之间以tab键进行分割 ...

  10. LeetCode篇之链表:1290(二进制链表转整数)

    LeetCode篇之链表:1290-->二进制链表转整数 1290. 二进制链表转整数 题目: 解题思路: 源码: 改进: 踩坑点: 1290. 二进制链表转整数 题目: 解题思路: 1.先遍历 ...

最新文章

  1. Swift 闭包表达式
  2. MFC实现获取鼠标位置的小程序
  3. POJ - 3259 Wormholes(判断负环)
  4. if ( document.all ) 可以简单的判断浏览器是否IE浏览器?
  5. 520,一份给程序员的“硬核”脱单秘籍
  6. 从Retrofit的源码来看 HTTP
  7. 使用Jenkins打包vue项目丢失静态资源
  8. 为啥淘宝网,拍拍网上的windows7激…
  9. android探索之UID u0_axxx的由来
  10. 网页制作大作业HTML+CSS制作静态网页----原神
  11. ORACLE AutoVue 服务器/桌面版/WebService/SDK安装
  12. [玩转UE4/UE5动画系统>C++篇>C++基础] 之 C++版模板中那些琐碎而又应知应会的语法知识小结(本文献给刚学完谭浩强就来啃UEC++的同学)
  13. shiro权限控制登陆成功页面跳转问题
  14. Advanced SystemCare Pro 中文绿色特别便携正式版一款易于使用的 Windows 电脑优化工具
  15. hibernate之HQL实体更新与删除
  16. 2021-06-03 一只小小白K 期许未来!
  17. android 装饰着模式,Android与设计模式——装饰者(Decorator)模式
  18. linux系统下的打印机驱动下载,方法论:Linux下如何驱动主流品牌打印机
  19. matlab源知识库,MATLAB產生隨機數
  20. Tokenview | 区块链安全

热门文章

  1. win10以太网没有有效的ip配置
  2. w ndows10专业版连接不上网,windows10系统电脑插着网线却连不上网如何解决
  3. 那些年常见的前端bug (持续更新)
  4. windows安装idea2019.3.3
  5. “不限流量卡”真的不限量,但是却限制了这些!
  6. Nginx负载均衡是酱紫做的
  7. 操作系统(一)——绪论
  8. Excel数据透视,日期最大值或最小值显示为0
  9. 已解决-改变macOS和Windows双系统的默认启动顺序
  10. 传世单机架设,账号登陆后,无法选择服务器,点击无效,无法进入游戏。