链接:

https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1761

题意:

有一道比赛题目,输入两个整数x、y(1≤x,y≤n),输出某个函数f(x,y)。
有位选手想交表(即事先计算出所有的f(x,y),写在源代码里),但表太大了,源代码超过了比赛限制,需要精简。
那道题目有一个性质,即很容易根据f(x,y)算出f(x*k, y*k)(k是任意正整数),这样有一些f(x,y)就不需要保存了。
输入n(n≤50000),你的任务是统计最简的表里有多少个元素。例如,n=2时有3个:(1,1), (1,2), (2,1)。

分析:

本题的本质是:输入n,有多少个二元组(x,y)满足:1≤x,y≤n,且x和y互素。
不难发现除了(1,1)之外,其他二元组(x,y)中的x和y都不相等。设满足x<y的二元组有f(n)个,那么答案就是2f(n)+1。
对照欧拉函数的定义,可以得到f(n)=phi(2)+phi(3)+…+phi(n)。

代码:

 import java.io.*;
import java.util.*; public class Main {
static final int UP = 50000;
static int phi[] = new int[UP+5]; static void constant() {
for(int t = 2; t <= UP; t++) if(phi[t] == 0) {
for(int i = t; i <= UP; i += t) {
if(phi[i] == 0) phi[i] = i;
phi[i] = phi[i] / t * (t-1);
}
}
for(int i = 3; i <= UP; i++) phi[i] += phi[i-1];
} public static void main(String args[]) {
Scanner cin = new Scanner(new BufferedInputStream(System.in));
constant(); while(true) {
int n = cin.nextInt();
if(n == 0) break;
System.out.println(2 * phi[n] + 1);
}
cin.close();
}
}

UVa 10820 - Send a Table(欧拉函数)的更多相关文章

  1. Uva 10820 Send a Table(欧拉函数)

    对每个n,答案就是(phi[2]+phi[3]+...+phi[n])*2+1,简单的欧拉函数应用. #include<iostream> #include<cstdio> # ...

  2. UVa 10820 (打表、欧拉函数) Send a Table

    题意: 题目背景略去,将这道题很容易转化为,给出n求,n以内的有序数对(x, y)互素的对数. 分析: 问题还可以继续转化. 根据对称性,我们可以假设x<y,当x=y时,满足条件的只有(1, 1 ...

  3. UVa10820 Send a Table[欧拉函数]

    Send a TableInput: Standard Input Output: Standard Output When participating in programming contests ...

  4. uva 10820 (筛法构造欧拉函数)

    send a table When participating in programming contests, you sometimes face the following problem: Y ...

  5. UVA 10820 - Send a Table 数论 (欧拉函数)

    Send a Table Input: Standard Input Output: Standard Output When participating in programming contest ...

  6. UVA 11424 GCD - Extreme (I) (欧拉函数+筛法)

    题目:给出n,求gcd(1,2)+gcd(1,3)+gcd(2,3)+gcd(1,4)+gcd(2,4)+gcd(3,4)+...+gcd(1,n)+gcd(2,n)+...+gcd(n-1,n) 此 ...

  7. UVA 11426 GCD - Extreme (II) (欧拉函数+筛法)

    题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=70017#problem/O 题意是给你n,求所有gcd(i , j)的和,其中 ...

  8. UVa 10214 (莫比乌斯反演 or 欧拉函数) Trees in a Wood.

    题意: 这道题和POJ 3090很相似,求|x|≤a,|y|≤b 中站在原点可见的整点的个数K,所有的整点个数为N(除去原点),求K/N 分析: 坐标轴上有四个可见的点,因为每个象限可见的点数都是一样 ...

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

    分析:枚举每个数的贡献,欧拉函数筛法 #include <cstdio> #include <iostream> #include <ctime> #include ...

随机推荐

  1. PHP学习7——文件系统

    主要内容: 打开和关闭文件 文件类型 文件处理 目录处理 访问远程文件 文件锁定 文件上传 数据除了可以存储在数据库中,我们主要的还是存储在文件中,而且存储在文件中更加的方便直接. 打开和关闭文件 打 ...

  2. 项目开发-->高级功能汇总

    祭奠曾经逝去的青春…… 1.高级功能汇总-->Memcached之ASP.NET实现 2.高级功能汇总-->HubbleDotNet软件安装

  3. golang中的make与new

    golang 中有两个内存分配机制 :new和make,二者有明显区别. new:new(T)分配了零值填充的T类型的内存空间,并且返回其地址,即一个*T类型的值.其自身是一个指针.可用于初始化任何类 ...

  4. encodeURI和 encodeURIComponent 的作用及应用

    首先解释下 encodeURIComponent 的作用:将文本字符串编码为一个有效的统一资源标识符 (URI).为什么要用这个是因为我想把 username 整个当做参数传递给 CGI, 而不让 C ...

  5. Java使用反射来获取成员变量泛型信息

    Java通过指定类对应的Class对象,程序可以获得该类里包括的所有Field,不管该Field使用private修饰,还是使用public修饰.获得了Field对象后,就可以很容易的获得该Field ...

  6. Struts 2 框架相比Struts1的新特性

    POJO形式和POJO动作 - 已经摆脱了Struts2的动作表单的Struts框架的一个组成部分.Struts2可以使用任何的POJO接收的形式输入.同样的,你现在可以看到任何POJO的Action ...

  7. 通过mysql自动同步redis

    在服务端开发过程中,一般会使用MySQL等关系型数据库作为最终的存储引擎,Redis其实也可以作为一种键值对型的数据库,但在一些实际场景中,特别是关系型结构并不适合使用Redis直接作为数据库.这俩家 ...

  8. DOM节点常见的属性及操作

    (1)常见节点属性 childNodes      子节点 nodeList children      子节点(元素节点) HTMLCollection parentNode       父节点 p ...

  9. nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)解决方案

    前提:已经配置好静态IP以防万一,先安装好iptables服务(不管你装没装,先执行,免得后面添乱)[root@localhost ~]# yum install iptables-services[ ...

  10. css3 animation运用

    animation:mymove 5s infinite; @keyframes mymove { from {left:0px;} to {left:200px;} } @-webkit-keyfr ...