UVA Tress in a Wood
https://vjudge.net/problem/UVA-10214
题意:给定一个坐标系。|x|<=a, |y|<=b 求坐标系中有多少点是可以从原点直接看到(即从原点和一个点连线,线段没有经过其他点就ok);
题解:由于是和原点连线,所以所有的点满足y=k*x;我们可以发现满足条件的点是坐标互素的点。用反证法证明,假设一个点的x,y左边不互素,即gcd(x,y)!=1,y=k*x,则必然存在一个点y0=y/g,x0=x/g 也满足y0=k*x0,而且x0,y0,势必相对于x,y而言更加靠近原点,所以x,y是不符合条件的。但是由于x,y的大小范围不一致,不好通过欧拉直接枚举怎么处理呢?gcd(n,m)=gcd(n+m,n) 这个东西就用上了
对于n 1~n中的x gcd(x,n)=1的个数为phi(n);
同样对于n 1+n~n+n中的x gcd(x,n)=1的个数与phi(n)一致!
这样我们就可以枚举范围小的值,然后多出来的部分单独处理
ac代码:
#include <cstdio>
#include <iostream>
#include <cstring>
#include <queue>
using namespace std;
typedef long long ll;
int phi[];
void init()
{
for(ll i=;i<=;i++) phi[i]=i;
for(ll i=;i<=;i++)
{
if(phi[i]==i)
{
for(ll j=i;j<=;j+=i)
{
phi[j]=phi[j]/i*(i-);
}
}
}
}
ll gcd(ll a,ll b)
{
if(b==) return a;
else return gcd(b,a%b);
}
int main()
{
ll a,b;
init();
while(cin>>a>>b)
{
if(a== && b==) break;
ll minn=min(a,b);
ll maxx=max(a,b);
ll sum=;
ll k;
for(ll i=;i<=minn;i++)
{
ll temp=phi[i];
ll ret=maxx/i;
temp*=ret;
for(ll j=;j<=maxx%i;j++)
{
if(gcd(j,i)==) temp++;
}
// cout<<temp<<endl;
sum+=temp;
}
sum=sum*+;
k=(*a+)*(*b+)-;
double fin=(sum*1.0)/(k*1.0);
printf("%.7lf\n",fin);
}
return ;
}
UVA Tress in a Wood的更多相关文章
- Trees in a Wood. UVA 10214 欧拉函数或者容斥定理 给定a,b求 |x|<=a, |y|<=b这个范围内的所有整点不包括原点都种一棵树。求出你站在原点向四周看到的树的数量/总的树的数量的值。
/** 题目:Trees in a Wood. UVA 10214 链接:https://vjudge.net/problem/UVA-10214 题意:给定a,b求 |x|<=a, |y|&l ...
- UVa 10214 - Trees in a Wood.(欧拉函数)
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- UVa 10214 (莫比乌斯反演 or 欧拉函数) Trees in a Wood.
题意: 这道题和POJ 3090很相似,求|x|≤a,|y|≤b 中站在原点可见的整点的个数K,所有的整点个数为N(除去原点),求K/N 分析: 坐标轴上有四个可见的点,因为每个象限可见的点数都是一样 ...
- UVA 10214 Trees in a Wood
https://vjudge.net/problem/UVA-10214 题意:你站在原点,每个坐标位置有一棵高度相同的树,问能看到多少棵树 ans=Σ gcd(x,y)=1 欧拉函数搞搞 #incl ...
- UVA 10214 Trees in a Wood(欧拉函数)
题意:给你a.b(a<=2000,b<=2000000),问你从原点可以看到范围在(-a<=x<=a,-b<=y<=b)内整数点的个数 题解:首先只需要计算第一象限 ...
- UVa 10214 Trees in a Wood. (数论-欧拉函数)
题意:给定一个abs(x) <= a, abs(y) <= b,除了原点之外的整点各有一棵树,可以相互阻挡,求从原点可以看到多少棵树. 析:由于a < b,所以我们可以一列一列的统计 ...
- Trees in a Wood UVA - 10214 欧拉函数模板
太坑惹,,,没用longlong各种WA #include <iostream> #include <string.h> #include <cstdio> #in ...
- UVa 11729 - Commando War(贪心)
"Waiting for orders we held in the wood, word from the front never came By evening the sound of ...
- POJ 1873 UVA 811 The Fortified Forest (凸包 + 状态压缩枚举)
题目链接:UVA 811 Description Once upon a time, in a faraway land, there lived a king. This king owned a ...
随机推荐
- jenkins权限问题
今天用jenkins的时候,构建失败,看了下控制台输出,提示是缺少权限,以前也遇到过这个问题,当时是通过把相关文件夹权限设置为777解决的,这种办法有两个不好的地方,一是这样一来任何用户都能操作这个文 ...
- AtomicInteger原理
AtomicInteger的原理 java的并发原子包里面提供了很多可以进行原子操作的类,比如: AtomicInteger AtomicBoolean AtomicLong AtomicRefere ...
- 重读APUE(13)-可靠信号
在信号产生和传递之间有一段时间间隔,称为信号是未决的: 进程可以设置阻塞信号传递:如果进程产生了一个阻塞的信号,并且对该信号的动作是系统默认或者捕捉该信号,则该进程保持此信号为未决状态,直到该进程对此 ...
- 如何隐藏EFI分区?
U盘制作PE 后多了个EFI分区, 傲梅分区助手,,里面可以进行隐藏分区 文章来源:刘俊涛的博客 欢迎关注,有问题一起学习欢迎留言.评论
- CloudFlare 新手入门中文教程
loudFlare成立于2009年,是国外著名的免费CDN网站加速服务公司,CloudFlare 还提供实时安全保护服务和网络优化等,采用的是免费+增值模式,可以免费使用,也有收费服务.国内也有很多免 ...
- 设计模式----外观(facade)模式
外观(facade)模式外观模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用.uml图
- python核心模块方法
********************os模块: os.remove() 删除文件 os.unlink() 删除文件 os.rename() 重命名文件 os.listdir() 列出指定目录下所有 ...
- WPF 设置TextBox为空时,背景为文字提示。
<TextBox FontSize="> <TextBox.Resources> <VisualBrush x:Key="HelpBrush" ...
- yum搭建LAMP环境
LAMP=Linux+Apache(httpd)+Mysql(mariadb)+PHP Apache HTTP 服务器 2.4 文档:http://httpd.apache.org/docs/2.4/ ...
- Spring Boot设置定时任务
在 http://start.spring.io/ 中新建一个Group为com.zifeiy,Artifact为task的工程. 然后在TaskApplication中添加注释:@EnableSch ...