1. #include<bits/stdc++.h>
  2. #define N 5000010
  3. #define yql 1000000007
  4. using namespace std;
  5. typedef long long ll;
  6. int T,k,n[],m[],maxn,vis[N],prime[N];
  7. int mu[N],cnt=,fac[N];
  8. ll f[N],s[N];
  9. inline int read(){
  10. int f=,x=;char ch;
  11. do{ch=getchar();if(ch=='-')f=-;}while(ch<''||ch>'');
  12. do{x=x*+ch-'';ch=getchar();}while(ch>=''&&ch<='');
  13. return f*x;
  14. }
  15. inline ll fpow(ll x,ll p){
  16. x%=yql;ll ans=;
  17. for(;p;p>>=,x=x*x%yql)if(p&)ans*=x,ans%=yql;
  18. return (ans+yql)%yql;
  19. }
  20. void calcmu(){
  21. cnt=;mu[]=;s[]=;memset(vis,,sizeof(vis));
  22. for(int i=;i<=maxn;i++){
  23. if(vis[i]){prime[++cnt]=i;fac[i]=i;mu[i]=-;f[i]=fpow(i,k);s[i]=f[i]-;}
  24. for(int j=;j<=cnt;j++){
  25. int p=prime[j],t=i*p;if(t>maxn)break;
  26. vis[t]=;
  27. if(i%p==){
  28. mu[t]=;fac[t]=fac[i]*p;
  29. s[t]=1LL*s[i]*f[prime[j]]%yql;
  30. break;
  31. }
  32. mu[t]=-mu[i];s[t]=1LL*s[i]*s[p]%yql;
  33. }
  34. }
  35. for(int i=;i<=maxn;i++)mu[i]+=mu[i-],s[i]+=s[i-],s[i]%=yql;
  36. }
  37. int main(){
  38. T=read();k=read();
  39. for(int i=;i<=T;i++){
  40. n[i]=read(),m[i]=read();
  41. maxn=max(maxn,max(n[i],m[i]));
  42. }
  43. calcmu();
  44. for(int i=;i<=T;i++){
  45. int nn=n[i],mm=m[i];if(nn>mm)swap(nn,mm);
  46. ll ans=;
  47. for(int i=,j=;i<=nn;i=j+){
  48. j=min(mm/(mm/i),nn/(nn/i));
  49. ans+=(s[j]-s[i-]+yql)%yql*(nn/i)%yql*(mm/i)%yql;ans%=yql;
  50. }
  51. printf("%lld\n",ans);
  52. }
  53. }

试了下maxn操作,结果还是BZOJ倒数TAT

感觉式子化得没问题啊?

【反演复习计划】【bzoj4407】于神之怒加强版的更多相关文章

  1. BZOJ4407 于神之怒加强版 - 莫比乌斯反演

    题解 非常裸的莫比乌斯反演. 但是反演完还需要快速计算一个积性函数(我直接用$nlogn$卷积被TLE了 推荐一个博客 我也不想再写一遍了 代码 #include<cstring> #in ...

  2. BZOJ4407: 于神之怒加强版(莫比乌斯反演 线性筛)

    Description 给下N,M,K.求 感觉好迷茫啊,很多变换看的一脸懵逼却又不知道去哪里学.一道题做一上午也是没谁了,, 首先按照套路反演化到最后应该是这个式子 $$ans = \sum_{d ...

  3. 【反演复习计划】【51nod1594】Gcd and Phi

    现在感觉反演好多都是套路QAQ…… #include<bits/stdc++.h> using namespace std; ; typedef long long ll; int n,c ...

  4. 【反演复习计划】【COGS2432】爱蜜莉雅的施法

    也是一个反演. 第一次手动推出一个简单的式子,激动.jpg 原题意思是求:$Ans=\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}\phi(gcd(i,j))$随 ...

  5. 【反演复习计划】【bzoj1011】zap-queries

    快三个月没做反演题了吧…… 感觉高一上学期学的全忘了…… 所以还得从零开始学推式子. # bzoj1011 标签(空格分隔): 未分类 --- 原题意思是求以下式子:$Ans=\sum\limits_ ...

  6. [BZOJ4407]于神之怒加强版

    BZOJ挂了... 先把程序放上来,如果A了在写题解吧. #include<cstdio> #include<algorithm> #define N 5000010 #def ...

  7. 【反演复习计划】【COGS2433】&&【bzoj3930,CQOI2015选数】爱蜜莉雅的冰魔法

    同bzoj3930. (日常盗题图) #include<bits/stdc++.h> #define N 1000010 #define yql 1000000007 #define ll ...

  8. 【反演复习计划】【COGS2431】爱蜜莉雅的求助

    出题人怎么这么不认真啊==明明官方译名是爱蜜莉雅…… 而且我们爱蜜莉雅碳是有英文名哒!是Emilia.你那个aimiliya我实在是无力吐槽…… 不过抱图跑23333首先这很像约数个数和函数诶!但是唯 ...

  9. 【反演复习计划】【bzoj2154】Crash的数字表格

    膜拜cdc……他的推导详细到我这种蒟蒻都能看得懂! 膜拜的传送门 所以我附一下代码就好了. #include<bits/stdc++.h> #define N 10000005 #defi ...

随机推荐

  1. centos7安装python3.7

    Centos7安装Python3的方法   由于centos7原本就安装了Python2,而且这个Python2不能被删除,因为有很多系统命令,比如yum都要用到. [root@VM_105_217_ ...

  2. 简单的素数问题(C++)

    [问题描述] 已知三个素数的和为 n ,正整数 n 由键盘输入,计算并输出这三个素数乘积的最大值. [代码展示] # include<iostream>using namespace st ...

  3. BZOJ 4011 HNOI2015 落忆枫音 DAG上的dp(实际上重点在于分析)

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=4011 题意概述:给出一张N点的DAG(从1可以到达所有的点),点1的入度为0.现在加一条原 ...

  4. Object类中的五种方法

    clone() Object类源码:protected native Object clone() throws CloneNotSupportedException; 这里有个问题:为什么Sun公司 ...

  5. 如何在tracepoint上注册函数

    register_trace_##name宏中 tracepoint_probe_register在这个函数中在同一个cp上可以挂多个处理函数, 查看函数:trace_block_rq_issue中定 ...

  6. 算法(7)Majority Element II

    题目:找出数组中出现次数大于n/3次的数字 思路:摩尔投票法.所有的帖子中都说:先遍历一遍数组找到备选元素,然后再遍历一遍数组考察下这个元素是否是真的超过n/3,然后就直接上代码,但是现在的问题是:我 ...

  7. php laravel 框架搭建与运行

    目录 安装 composer 安装 laravel 运行 php hello world 一.安装 composer (mac) 下载 composer.phar 下载地址:https://getco ...

  8. Delphi函数详解:全局函数,内部函数,类的成员函数,类的静态方法

    1. Delphi中的全局函数 //要点: 需要给其他单元调用, 必须在 interface 声明, 但必须在 uses 区后面 unit Unit1; interface uses   Window ...

  9. 批处理中的IF详解

    在CMD使用IF /?打开IF的系统帮助会发现IF有3种基本的用法! 第一种用法:IF [NOT] ERRORLEVEL number command 这种用法现在很少用了,因为它需要使用到CHOIC ...

  10. 【题解】HNOI2008GT考试

    这题好难啊……完全不懂矩阵加速递推的我TAT 这道题目要求我们求出不含不吉利数字的字符串总数,那么我们有dp方程 : dp[i][j](长度为 i 的字符串,最长与不吉利数字前缀相同的后缀长度为 j ...