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 ...
随机推荐
- 计算机中buffer和cache的理解
Linux中Buffer和Cache的区别 Cache 和 Buffer的区别 作者:知乎用户链接:https://www.zhihu.com/question/26190832/answer/323 ...
- Angular4.x+Ionic3 踩坑之路之打包时出现JAVASCRIPT HEAP OUT OF MEMORY的几种解决办法
最近开发的一个比较大型的App时打生产环境包是出现内存不足导致打包失败的问题.然后百度发现解决方法都是一样,自己试了一下都没什么暖用,心里只想用呵呵来形容了.最后经朋友介绍,技术问题还得去谷歌,git ...
- 安装RabbitMQ管理插件失败
运行 rabbitmq-plugins.bat enable rabbitmq_management后提示失败信息 是因为erlang和RabbitMQ版本冲突导致
- Swift 字符(Character)
Swift 的字符是一个单一的字符字符串字面量,数据类型为 Character. import Cocoa let char1: Character = "A" let char2 ...
- kotlin陪伴对象
在kotlin中并没有静态类成员的概念,但并不等于实现类似于静态类成员的功能,陪伴对象可以解决这个问题 fun main(arg: Array<String>) { val create ...
- 阶段5 3.微服务项目【学成在线】_day05 消息中间件RabbitMQ_3.RabbitMQ研究-工作原理
Producer生产者 Consumer:消费者 组成部分说明如下: Broker:消息队列服务进程,此进程包括两个部分:Exchange和Queue. Exchange:消息队列交换机,按一定的规则 ...
- JAVA 基础编程练习题20 【程序 20 求前 20 项之和】
20 [程序 20 求前 20 项之和] 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前 20 项之和. 程序分析:请抓住分子与分母的变化规律. pac ...
- 在线word转html
http://www.docpe.com/word/word-to-html.aspx
- unity 读取灰度图生成按高程分层设色地形模型
准备灰度图 1.高程按比例对应hue色相(hsv)生成mesh效果 o.color = float4(hsv2rgb(float3(v.vertex.y/100.0, 0.5, 0.75)), 1.0 ...
- QFramework 使用指南 2020 (一): 概述
大家好,我是 QFramework 的作者 凉鞋,QFramework 从第一次代码提交到现在快 5 年了,期间陆陆续续增加了很多功能,在使用体验上做了大量的改进. 而市面上关于 QFramework ...