当前位置: 首页 > news >正文

2301: [HAOI2011]Problem b

2301: [HAOI2011]Problem b

Time Limit: 50 Sec  Memory Limit: 256 MB
Submit: 1737  Solved: 749
[ Submit][ Status][ Discuss]

Description

 

对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数。



Input

第一行一个整数n,接下来n行每行五个整数,分别表示a、b、c、d、k

 

Output

共n行,每行一个整数表示满足要求的数对(x,y)的个数

 

Sample Input

2

2 5 1 5 1

1 5 1 5 2



Sample Output


14

3



HINT

 



100%的数据满足:1≤n≤50000,1≤a≤b≤50000,1≤c≤d≤50000,1≤k≤50000

 

Source

 

题解:一个霸(dou)气(bi)的莫比乌斯反演,然后没啥了,开始瞎搞——不过这题里面有个重要的思想——既然直接求某“悬空”区间的结果(“悬空”区间即像本题中第一个值设定为[a,b],而不是(0,b]),那么为何不用好求的求出来然后容斥原理加加减减呢——嗯哼么么哒

 1 const maxn=150000;
 2 var
 3    i,j,k,l,m,n,x1,y1,x2,y2,z:longint;
 4    a,b:array[0..maxn] of longint;
 5 procedure swap(var x,y:longint);
 6           var z:longint;
 7           begin
 8                z:=x;x:=y;y:=z;
 9           end;
10 function doit(x,y:longint):int64;
11          var i,j,k:longint;
12          begin
13               doit:=0;
14               if x>y then swap(x,y);
15               if x=0 then exit(0);
16               i:=1;
17               while i<=x do
18                     begin
19                          if (x div (x div i))<(y div (y div i)) then
20                             k:=x div (x div i)
21                          else k:=y div (y div i);
22                          inc(doit,(b[k]-b[i-1])*int64(x div i)*int64(y div i));
23                          i:=k+1;
24                     end;
25          end;
26 begin
27      for i:=2 to maxn do
28          begin
29               if a[i]<>0 then continue;
30               for j:=i to maxn div i do a[i*j]:=i;
31          end;
32      b[1]:=1;
33      for i:=2 to maxn do
34          if a[i]=0 then b[i]:=-1 else
35             if ((i div a[i]) mod a[i])=0 then b[i]:=0 else
36                b[i]:=-b[i div a[i]];
37      for i:=2 to maxn do b[i]:=b[i]+b[i-1];
38      readln(n);
39      for i:=1 to n do
40          begin
41               readln(x1,y1,x2,y2,z);
42               x1:=(x1-1) div z;y1:=y1 div z;
43               x2:=(x2-1) div z;y2:=y2 div z;
44               writeln(doit(y1,y2)-doit(x1,y2)-doit(y1,x2)+doit(x1,x2));
45          end;
46      readln;
47 end.

 

转载于:https://www.cnblogs.com/HansBug/p/4472303.html

相关文章:

  • poj 1251 统计难题(字典树)
  • uploadify.js参数说明(转)
  • MongoDB高可用架构:Replica Sets+Sharding
  • 实验二 Java面向对象程序设计
  • Linq之求和,平均值,最大值,最小值
  • Android 中文API (70) —— BluetoothDevice[蓝牙]
  • 动态数组排序实例
  • Nginx 反向代理、负载均衡与动静分离
  • [裴礼文数学分析中的典型问题与方法习题参考解答]4.4.9
  • 贪心 URAL 1303 Minimal Coverage
  • 使用JS或jQuery模拟鼠标点击a标签事件代码
  • 创建activiti工作流所需23张表
  • Spring Userservice-用户登录,登录数据库密码存储以及防止暴力破解
  • 复习之webview(观看张荣超视频)
  • Android6 Socket通信
  • [数据结构]链表的实现在PHP中
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • 【5+】跨webview多页面 触发事件(二)
  • 【node学习】协程
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • HTTP--网络协议分层,http历史(二)
  • input的行数自动增减
  • js数组之filter
  • Mysql优化
  • Vue 2.3、2.4 知识点小结
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 开源地图数据可视化库——mapnik
  • 七牛云 DV OV EV SSL 证书上线,限时折扣低至 6.75 折!
  • 悄悄地说一个bug
  • 时间复杂度与空间复杂度分析
  • 使用agvtool更改app version/build
  • 在electron中实现跨域请求,无需更改服务器端设置
  • mysql面试题分组并合并列
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • $GOPATH/go.mod exists but should not goland
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .libPaths()设置包加载目录
  • .NET MVC之AOP
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)
  • .net图片验证码生成、点击刷新及验证输入是否正确
  • .Net转前端开发-启航篇,如何定制博客园主题
  • .vollhavhelp-V-XXXXXXXX勒索病毒的最新威胁:如何恢复您的数据?
  • @NoArgsConstructor和@AllArgsConstructor,@Builder
  • @zabbix数据库历史与趋势数据占用优化(mysql存储查询)
  • [ C++ ] STL_list 使用及其模拟实现