hdu 1695

题目:http://acm.hdu.edu.cn/showproblem.php?pid=1695

给出a b c d k 在 [a,b] [c,d]内各找一个数,使得gcd(x,y) == k,也就是说 gcd(x / k, y / k) == 1,所以就是在 [1,b / k] [1, d / k]中找互质的对数。容斥原理和欧拉函数的应用,首先在打印素数的同时求出每个数的欧拉函数值,对于[1,b]内的数直接用欧拉数组求互质的对数,对于[b + 1,d]的数用容斥原理求互质对数,首先求出不互质的对数,然后用总的减去不互质的对数。比如说某个数 n ,首先求出 n 的所有因子num, 假设单个因子个数为num1,任意两个因子个数相乘所得因子个数num2,任意三个因子相乘所得因子个数num3 ~~~numn, 那么与n 不互质的个数 tnum = num1 - num2 + num3 - num4 + ~~~~ (-1) ^ (n - 1) numn

View Code
 1 typedef __int64 ll;
 2 const int N = 100001;
 3 int prime[N], phi[N];
 4 int num,tnum;
 5 void is_prime()  //  求欧拉函数
 6 {
 7     int i,j;
 8     phi[0] = 0, phi[1] = 1;
 9     for(i = 2; i < N; i++)
10     {
11         if(!phi[i])
12         {
13             phi[i] = i - 1;
14             prime[num ++] = i;
15         }
16         for(j = 0; (j < num) && (i * prime[j]) < N; j++)
17         {
18             if(i % prime[j] == 0)
19             {
20                 phi[i * prime[j]] = phi[i] * prime[j];
21                 break;
22             }
23             phi[i * prime[j]] = phi[i] * (prime[j] - 1);
24         }
25     }
26 }
27 ll solve(int n,int r)  // 容斥定理求互质个数
28 {
29     vector<int>p;
30     for(int i = 2; i * i <= n; i++)
31     {
32         if(n % i == 0) p.push_back(i); 
33         while(n % i == 0) n /= i;
34     }
35     if(n > 1) p.push_back(n);
36     ll sum = 0;
37     for(int j = 1; j < (1 << p.size()); j ++)
38     {
39         ll mult = 1, bit = 0;
40         for(int i = 0; i < (int)p.size(); i++)
41         {
42             if(j & (1 << i))
43             {
44                 bit ++;
45                 mult *= p[i];
46             }
47         }
48         ll cur = r / mult;
49         if(bit % 2) sum += cur;
50         else sum -= cur;
51     }
52     return r - sum;
53 }
54 int main()
55 {
56     int a,b,c,d,k;
57     int i;
58     int t,cs = 0;
59     is_prime();
60     //freopen("data.txt","r",stdin);
61     scanf("%d",&t);
62     while(t--)
63     {
64         scanf("%d%d%d%d%d",&a,&b,&c,&d,&k);
65         printf("Case %d: ",++cs);
66         if(k == 0)
67         {
68             printf("%d\n",0);
69             continue;
70         }
71         b /= k, d /= k;
72         if(b > d) swap(b,d);
73         ll ans = 0;
74         for(i = 1; i <= b; i++)
75         ans += phi[i];
76         for(i = b + 1; i <= d; i++)
77         {
78             ans += solve(i,b);
79         }
80         cout<<ans<<endl;
81         //printf("%I64d\n",ans);
82         //printf("%lld\n",ans);
83     }
84     return 0;
85 }

转载于:https://www.cnblogs.com/fxh19911107/archive/2012/10/11/2720246.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/409487.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sql 链接到oracle数据库,通过MSSQL连接服务器连接至Oracle数据库

前言有很多时候&#xff0c;我们需要MSSQL与Oracle进行跨库查询或数据交互。本篇随笔将阐述如何通过MSSQL的连接服务器连接至Oracle数据库&#xff0c;并且读取数据的示例。具体步骤首先需要到Oracle的官网下载Oracle Client(简称OCT)&#xff0c;也就是通常大家所说的Oracle客…

oracle更新数据没有变化,往oracle里面写入数据,怎么表空间都没有变化

当freelist里面没有记录了&#xff0c;也就是块空间已经没有办法容纳新的记录了&#xff0c;这时候就需要扩展extent.这里有一个脚本来查看段空间使用情况。[php]create or replace procedure show_space( p_segname in varchar2,p_owner in varchar2 default user,p_type …

docker构建oracle集群,docker 构建 oracle数据库 镜像-Go语言中文社区

前言之前docker 部署的 oracle 镜像&#xff0c;突然从 dockerhub 下架了。所以没办法&#xff0c;只能自己打包一个oracle 数据库的镜像。找来找去&#xff0c;其实oracle 自身就提供了oracle 的产品 docker 构建脚本。所以直接按照oracle 官方的docker 构建仓库的说明打包。o…

获取图片倒影效果

获取图片倒影效果 View Code 1 /**2 * 获取传入图片的倒影3 * 4 * param originalImage 原始图片5 * param reflectionGap 原始图片与倒影图片的间距6 * param percentage 倒影是原图的高度的百分比 . 0< percentage < 1 7 * param o…

三星关闭shell提示_啄木鸟家庭维修|三星滚筒洗衣机4c故障代码

三星滚动洗衣机是很多用户都会安装的一种洗衣机&#xff0c;不管什么牌子的洗衣机&#xff0c;使用一段时间都可能出现一些故障&#xff0c;需要维修洗衣机。三星滚筒洗衣机4c就是一个常见洗衣机故障。下面介绍三星滚筒洗衣机4c故障代码。三星滚筒洗衣机4c故障代码表示进水故障…

mysql 写入慢_MySQL主从,你遇到过哪些问题?

上篇文章介绍了单机环境下的MySQL主从异步复制和主从半同步复制的搭建过程。搭建过程很简单&#xff0c;但是在实际使用过程中&#xff0c;更多的是解决问题&#xff0c;本篇文章将介绍一下MySQL主从复制中常见的问题以及如何定位问题和如何解决问题。1、可能的原因如下(1)主从…

linux自带磁盘加密工具下载,TrueCrypt(磁盘加密工具)

TrueCrypt是一款功能强大的虚拟磁盘加密工具&#xff0c;它能够在硬盘上创建一个或多个虚拟磁盘&#xff0c;并且自动加密磁盘文件&#xff0c;提供AES-256、Blowfish、Serpent等多种加密算法&#xff0c;用户可以同时采取两个或多个来提高加密效果&#xff0c;软件体积小巧&am…

虚拟同步发电机_一种光储型虚拟同步机介绍

专利权人 广东电网有限责任公司摘要&#xff1a;本实用新型实施例公开了一种光储型虚拟同步机&#xff0c;包括逆变器、光伏列、储能装置、本地负荷、开关和电网&#xff0c;所述光伏阵列通过第一DC/DC转换器连接在所述逆变器的直流母线上&#xff0c;所述储能装置通过第二DC/D…

windows 和linux查看硬件信息,Linux下如何查看硬件信息?

我们在 Linux 下进行开发时&#xff0c;有时也需要知道当前的硬件信息&#xff0c;比如&#xff1a;CPU几核&#xff1f;使用情况&#xff1f;内存大小及使用情况&#xff1f;USB设备是否被识别&#xff1f;等等类似此类问题。下面良许介绍一些常用的硬件查看命令。lshw 这个命…

YUI3下widget的plugin开发

最近在尝试使用YUI3重建ExtFrame框架&#xff0c;使用YUI3做为更佳的UI和JS支持 和ExtJS比&#xff0c;YUI3的UI看起来缺少了足够的UI控件&#xff0c;但是&#xff0c;YUI3的widget开发更灵活&#xff08;也更难掌握&#xff09;&#xff0c;YUI3的widget操作更多的基于DOM封装…

雅可比行列式_夏七八写:关于“斜二测画法”与雅可比行列式的关系的想法

最开始思考这两种有没有关系的时候也是偶然&#xff0c;&#xff0c;受到启发&#xff1a;雅可比行列式有什么意义呢&#xff0c;为什么对于像 的式子为什么要其后乘上一个雅可比行列式的绝对值呢&#xff1f;在说我的想法之前&#xff0c;我想可能要先提一下一些预备知识&…