/**
题目:Trees in a Wood. UVA 10214
链接:https://vjudge.net/problem/UVA-10214
题意:给定a,b求 |x|<=a, |y|<=b这个范围内的所有整点不包括原点都种一棵树。求出你站在原点向四周看到的树的数量/总的树的数量的值。
思路:
坐标轴上结果为4,其他四个象限和第一个象限看到的数量一样。所以求出x在[1,a]和y在[1,b]的x/y互质对数即可。
由于a比较小,所以枚举x,然后求每一个x与[1,b]的互质对数。
方法:
1<=y<=x; 那么phi(x)为结果。
x+1<=y<=2*x; 那么phi(x)为结果。因为gcd(x+i,x) = gcd(x,i);
2*x+1<=y<=3*x; 同理
.
.
k*x+1<=y<=b; 直接暴力枚举判断即可了 当然求x与[1,b]范围内的互质对数还可以使用容斥做法。求出x的所有素因子。
求b范围内有多少个数与x含有至少一个相同的素因子。由于会出现重复计算,所以容斥处理。
*/ #include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
#include<vector>
#include<set>
#include<cmath>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int inf = 0x3f3f3f3f;
const int maxn = 2e3+;
int a, b;
int phi[maxn];
void init()
{
for(int i = ; i < maxn; i++) phi[i] = i;
for(int i = ; i < maxn; i+=) phi[i]/=;
for(int i = ; i < maxn; i+=){
if(phi[i]==i){
for(int j = i; j < maxn; j+=i){
phi[j] = phi[j]/i*(i-);
}
}
}
}
int gcd(int a,int b)
{
return b==?a:gcd(b,a%b);
}
ll f(int a)
{
return 1LL**a+;
}
int main()
{
init();
while(scanf("%d%d",&a,&b)==&&a){
ll ans = ;
for(int i = ; i <= a; i++){
ans += b/i*phi[i];
int st = b/i*i+;
int et = b/i*i+b%i;
for(int j = st; j <= et; j++){
if(gcd(i,j)==) ans++;
}
}
printf("%.7lf\n",(ans*+)*1.0/(f(a)*f(b)-));
}
return ;
}

莫比乌斯做法: #include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
#include<vector>
#include<set>
#include<cmath>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int inf = 0x3f3f3f3f;
const int maxn = 2e3+;
int a, b;
int mu[maxn];
int prime[maxn], tot;
void init()
{
mu[] = ;
tot = ;
for(int i = ; i < maxn; i++){
if(prime[i]==){
prime[++tot] = i;
mu[i] = -;
}
for(int j = ; prime[j]*i<maxn; j++){
prime[prime[j]*i] = ;
if(i%prime[j]==){
mu[prime[j]*i] = ;
break;
}
mu[prime[j]*i] = -mu[i];
}
}
}
ll f(int a)
{
return 1LL**a+;
}
int main()
{
init();
while(scanf("%d%d",&a,&b)==&&a){
ll ans = ;
/*for(int i = 1; i <= a; i++){
ans += b/i*phi[i];
int st = b/i*i+1;
int et = b/i*i+b%i;
for(int j = st; j <= et; j++){
if(gcd(i,j)==1) ans++;
}
}*/
int mis = min(a,b);
for(int i = ; i <= mis; i++){
ans += mu[i]*1LL*(a/i)*(b/i);
}
printf("%.7lf\n",(ans*+)*1.0/(f(a)*f(b)-));
}
return ;
}

Trees in a Wood. UVA 10214 欧拉函数或者容斥定理 给定a,b求 |x|<=a, |y|<=b这个范围内的所有整点不包括原点都种一棵树。求出你站在原点向四周看到的树的数量/总的树的数量的值。的更多相关文章

  1. Trees in a Wood UVA - 10214 欧拉函数模板

    太坑惹,,,没用longlong各种WA #include <iostream> #include <string.h> #include <cstdio> #in ...

  2. GuGuFishtion HDU - 6390 (欧拉函数,容斥)

    GuGuFishtion \[ Time Limit: 1500 ms\quad Memory Limit: 65536 kB \] 题意 给出定义\(Gu(a, b) = \frac{\phi(ab ...

  3. UVa 10837 (欧拉函数 搜索) A Research Problem

    发现自己搜索真的很弱,也许做题太少了吧.代码大部分是参考别人的,=_=|| 题意: 给出一个phi(n),求最小的n 分析: 回顾一下欧拉函数的公式:,注意这里的Pi是互不相同的素数,所以后面搜索的时 ...

  4. UVa 11440 (欧拉函数) Help Tomisu

    题意: 给出N和M,统计区间x ∈ [2, N!],x满足所有素因子都大于M的x的个数. 分析: 首先将问题转化一下,所有素因子都大于M 等价于 这个数与M!互素 对于k大于M!,k与M!互素等价于 ...

  5. UVA 11426 (欧拉函数&&递推)

    题意:给你一个数N,求N以内和N的最大公约数的和 解题思路: 一开始直接想暴力做,4000000的数据量肯定超时.之后学习了一些新的操作. 题目中所要我们求的是N内gcd之和,设s[n]=s[n-1] ...

  6. UVA - 11426 欧拉函数(欧拉函数表)

    题意: 给一个数 N ,求 N 范围内所有任意两个数的最大公约数的和. 思路: f 数组存的是第 n 项的 1~n-1 与 n 的gcd的和,sum数组存的是 f 数组的前缀和. sum[n]=f[1 ...

  7. UVa 11426 (欧拉函数 GCD之和) GCD - Extreme (II)

    题意: 求sum{gcd(i, j) | 1 ≤ i < j ≤ n} 分析: 有这样一个很有用的结论:gcd(x, n) = i的充要条件是gcd(x/i, n/i) = 1,因此满足条件的x ...

  8. UVA 10820 欧拉函数模板题

    这道题就是一道简单的欧拉函数模板题,需要注意的是,当(1,1)时只有一个,其他的都有一对.应该对欧拉函数做预处理,显然不会超时. #include<iostream> #include&l ...

  9. GCD - Extreme (II) UVA - 11426 欧拉函数与gcd

    题目大意: 累加从1到n,任意两个数的gcd(i,j)(1=<i<n&&i<j<=n). 题解:假设a<b,如果gcd(a,b)=c.则gcd(a/c,b ...

随机推荐

  1. Intellij IDEA自动生成serialVersionUID

    [Setting]->[Inspections]->[Serialization issues]->[Serializable class without ’serialVersio ...

  2. hidefocus小技巧

    hidefocus即隐藏聚焦,具有使对象聚焦失效的功能,其功能相当于: onFocus="this.blur()" 它的值是一个布尔值,如 hidefocus="true ...

  3. python安全编程

    ##入门 这将是第一个一系列关于python编程的博客文章.python是一门非常强大的语言,因为它有信息安全社区的支撑.这意味着很多工具都是由python编写并且可以在脚本中调用很多模块.使用模块的 ...

  4. netty参考

    前言 问题 现如今我们使用通用的应用程序或者类库来实现系统之间地互相访问,比如我们经常使用一个HTTP客户端来从web服务器上获取信息,或者通过web service来执行一个远程的调用. 然而,有时 ...

  5. spock+maven+junitReport接口测试框架

    1.POM 文件: <?xml version="1.0" encoding="UTF-8"?><project xmlns="ht ...

  6. 爪哇国新游记之二十二----排序判断重复时间复杂度为2n的位图法

    import java.util.ArrayList; import java.util.List; /** * 位图法 * 用于整型数组判重复,得到无重复列表 * */ public class B ...

  7. Splunk 会议回想: 大数据的关键是机器学习

    作者 Jonathan Allen ,译者 张晓鹏 Splunk的用户大会已经接近尾声.三天时间的会议里,共进行了160多个主题研讨.涵盖了从安全.运营到商业智能.甚至包含物联网,会议中一遍又一遍出现 ...

  8. mui 根据 json 数据动态创建列表

    使用 underscore.js 模块解析 Underscore提供了一个轻量级的模板解析函数,它可以帮助我们有效地组织页面结构和逻辑. 实例: <!DOCTYPE html> <h ...

  9. undefined reference to `std::cout'等错误

    (1)gcc和g++都是GNU(组织)的一个编译器. (2)后缀名为.c的程序和.cpp的程序g++都会当成是c++的源程序来处理.而gcc不然,gcc会把.c的程序处理成c程序. (3)对于.cpp ...

  10. iOS UIButton文字和图片间距随意调整

    代码地址如下:http://www.demodashi.com/demo/11606.html 前记 在开发中,我们经常会遇到这么一种情况,就是一个按钮上面有图片也有文字,但是往往设计并不是我们想要的 ...