只记住了反演的一个式子,还是最不常用的、、所以就推不动了

首先再说明一下莫比乌斯函数:

1、积性函数,但不是完全积性函数(f(x,y)=f(x)*f(y)   gcd(x,y)==1 ),因此可以线筛

2、

这个东西证明要用、、别的应该就没用了

3(求和函数的性质)、

4、反演公式:

①:②:

ps:背错公式害死人

反演,就是原来根据f()求F()函数变成了根据F()求f()。

所以F()必须好求,f()必须难求,,反演题的难度就在于找F()和F()和f()之间的关系

把上面的式子琢磨透了就可以做题了

a~i~b c~j~d 中gcd(i,j)==k的数的个数    =   a/k~i~b/k  c/k~j~d/k 中gcd(i,j)==1的数的个数

这个题用F(i)表示1~x~b,1~y~d的最大公倍数含i这个约数的个数   显然为下取整(b/i)*下取整(d/i)

f(k)表示a~i~b c~j~d 中gcd(i,j)==k的数的个数

所以就有

答案在统计时注意要利用容斥:    + 1~b/k的和1~d/k    - 1~a/k的和1~d/k    - 1~c/k的和1~b/k   +1~a/k的和1~c/k

这样是o(n)的(枚举1的所有倍数)    但这样是过不了的、

有个优化就是利用    下取整(b/i)*下取整(d/i)的值的范围来用乘法和莫比乌斯函数前缀和优化

下一个数就是和i一个商的数的最大数+1,

就可以  q根n  出解了

码:

#include<iostream>
#include<cstdio>
using namespace std;
#include<algorithm>
int mu[50005],qsum[50005],i,su[50005],tot,j,T,a,b,c,d,k,ans;
bool he[50005];
void eular()
{mu[1]=1;qsum[1]=1;for(i=2;i<50000;i++){if(!he[i]){su[++tot]=i;mu[i]=-1;}   for(j=1;j<=tot&&i*su[j]<50000;j++){he[i*su[j]]=1;if(i%su[j]==0)mu[i*su[j]]=0;  else       mu[i*su[j]]=-mu[i];}qsum[i]=qsum[i-1]+mu[i];}//for(i=1;i<=500;i++)cout<<qsum[i]<<" ";}
int cal(int l,int r)
{int i,lin,daan=0;if(l>r)swap(l,r);for(i=1;i<=l;i=lin+1){lin=min(l/(l/i),r/(r/i));daan+=(qsum[lin]-qsum[i-1])*(l/i)*(r/i);}return daan;
}
int main()
{eular();scanf("%d",&T);while(T--){scanf("%d%d%d%d%d",&a,&b,&c,&d,&k);ans=0;ans+=cal(b/k,d/k);   ans-=cal((a-1)/k,d/k);ans-=cal((c-1)/k,b/k);ans+=cal((a-1)/k,(c-1)/k);  printf("%d\n",ans);} } 

2017.6.4 problem b 失败总结相关推荐

  1. 2017.10.11 Problem c 失败总结

    一开始就想偏了.. 首先计数题 30s + n<=300显然是让你n^3 dp的 先从手玩开始考虑 注意到从大到小出现的数字个数是可以判断有无解的 ,,然后可以画出一些区间的条件  如(> ...

  2. 2017.9.21 problem a 失败总结

    zz到怀疑人生. 这种要求规划决策取最大方案的题不应该很快想到dp二分网络流吗.怎么还在乱搞. 首先做这种题需要把题目中的抽象的信息量化 首先简单容斥:取说真话最多的(←而已经好几次无视简单容斥了) ...

  3. [Atcoder Code Festival 2017 Qual A Problem F] Squeezing Slimes

    原题链接:https://code-festival-2017-quala.contest.atcoder.jp/tasks/code_festival_2017_quala_f Squeezing ...

  4. 2020年第十八届西电程序设计竞赛网络预选赛之Problem A 失败的在线考试

    题目描述 某中学举行了一场在线考试,出题人准备了甲.乙两份题目.每份题目有 n 道单项选择题,每道题目有 4 个选项 A.B.C.D.由于工作人员的失误,一 些同学拿到了甲题目,另一些同学拿到了乙题目 ...

  5. 2017.10.23 硬币购物 失败总结

    这题常规套路根本用不上 一共就四枚硬币,所以要考虑对硬币的算法 然而谁能想到容斥啊... 首先查询是很多的,需要对每个查询做到尽量常数级 首先排除dp查询,因为状态肯定不支持O(1)查询 然后需要想到 ...

  6. 2017.10.22 方格染色 失败总结

    详细题解网上有好多.. 一开始想用一个并查集维护  确定关系 一个并查集维护相等关系 但会出现一些无解判不出来(原因未知) 所以就只能写加权并查集,记录每个点和他根节点的相等关系:0相等 1不等 然后 ...

  7. 2017.10.15 旅行comf 失败总结

    越是取值要求奇怪的题,范围不大的题,就越需要枚举. 这个比值的要求非常特殊,他没有任何最优值可以取,所以不能考虑dp及其相似算法 所以就要考虑枚举一个求另一个,易知枚举了最小的,加的必须是比他大的,所 ...

  8. 2017.10.12 礼物(zjoi2011) 失败总结

    听说n^4能过,于是愉快地敲了n^4  ,还带了两个最优性剪枝.. 结果事实证明是别人家的n^4...(wys?) 很奇怪玄学剪枝有时2^50次方都能过,为什么这个连1e10都过不了... TLE代码 ...

  9. 2017.10.8 志愿者招募 失败总结

    .这个题要是想用费用流写的话就太难了. 所以就要考虑统筹学的另一个工具--单纯形 实际上.很多网络流解决的都是线性规划的问题,,这些问题很多都可以用单纯形解 关于单纯形的学习资料网上很详细了..这里就 ...

最新文章

  1. 2018/8/26 PSO-based Clustering Techniques to Solve Multimodal Optimization Problems: A Survey
  2. Cell:人体细菌到究竟有多少,再作报告必引此文
  3. lintcode 中等题:subSets 子集
  4. envi读取格式ang 还是mtl,Landsat FAST文件格式及在ENVI中的读取方法
  5. Python字符串常用函数详解
  6. MySql中怎样使用case-when实现判断查询结果返回
  7. php实现文本替换,php文本替换 函数 strtr()、str_repalce()
  8. java 二分查找 排序_java 冒泡排序 二分查找
  9. Java反射机制API
  10. SpringSecurity + JWT实现单点登录
  11. nginx之反向代理、负载均衡
  12. android override作用,Android Studio中@override的含义
  13. cocos2d之json使用实例
  14. 广州计算机应用能力考试,2017年广州职称计算机考试报名时间和科目
  15. Spark服务启动的一些总结
  16. linux中id命令的功能,linux中的id命令
  17. python会自动释放内存吗_没白熬夜,终于把Python的内存管理机制搞明白了
  18. flash cs4的新特性
  19. vue3 动态获取屏幕尺寸
  20. 顾沛《抽象代数》2.0环、子环和商环习题解答

热门文章

  1. 计算机教案解说词,解说词(教案)
  2. 在html设置文字位置,html设置怎么文字的位置
  3. Spark GraphX相关使用方法
  4. Webpack打包工具的使用---打包引用JS和CSS文件
  5. android动画能超过父容器吗,Android中你不得不知道的动画知识 (一)
  6. 使用嵌套循环,打印四行五列星星矩形(每次只能打印一个*)
  7. 赋值运算符(AssignmentOperator)
  8. linux mount 默认读写,Linux mount 修改文件系统的读写属性
  9. 编程fi什么意思_盲人程序员如何编程?全靠每分钟450个单词
  10. plSql安装以及连接远程oracle相关配置