send a table

When participating in programming contests, you sometimes face the following problem: You know
how to calcutale the output for the given input values, but your algorithm is way too slow to ever
pass the time limit. However hard you try, you just can’t discover the proper break-off conditions that
would bring down the number of iterations to within acceptable limits.
    Now if the range of input values is not too big, there is a way out of this. Let your PC rattle for half
an hour and produce a table of answers for all possible input values, encode this table into a program,
submit it to the judge, et voila: Accepted in 0.000 seconds! (Some would argue that this is cheating,
but remember: In love and programming contests everything is permitted).
    Faced with this problem during one programming contest, Jimmy decided to apply such a ’technique’.
But however hard he tried, he wasn’t able to squeeze all his pre-calculated values into a program
small enough to pass the judge. The situation looked hopeless, until he discovered the following property
regarding the answers: the answers where calculated from two integers, but whenever the two
input values had a common factor, the answer could be easily derived from the answer for which the
input values were divided by that factor. To put it in other words:
    Say Jimmy had to calculate a function Answer(x, y) where x and y are both integers in the range
[1, N]. When he knows Answer(x, y), he can easily derive Answer(k ∗ x, k ∗ y), where k is any integer
from it by applying some simple calculations involving Answer(x, y) and k.
    For example if N = 4, he only needs to know the answers for 11 out of the 16 possible input value
combinations: Answer(1, 1), Answer(1, 2), Answer(2, 1), Answer(1, 3), Answer(2, 3), Answer(3, 2),
Answer(3, 1), Answer(1, 4), Answer(3, 4), Answer(4, 3) and Answer(4, 1). The other 5 can be derived
from them (Answer(2, 2), Answer(3, 3) and Answer(4, 4) from Answer(1, 1), Answer(2, 4) from
Answer(1, 2), and Answer(4, 2) from Answer(2, 1)). Note that the function Answer is not symmetric,
so Answer(3, 2) can not be derived from Answer(2, 3).
    Now what we want you to do is: for any values of N from 1 upto and including 50000, give the
number of function Jimmy has to pre-calculate.
Input
The input file contains at most 600 lines of inputs. Each line contains an integer less than 50001 which
indicates the value of N. Input is terminated by a line which contains a zero. This line should not be
processed.
Output

For each line of input produce one line of output. This line contains an integer which indicates how
many values Jimmy has to pre-calculate for a certain value of N.
Sample Input
2
5
0
Sample Output
3
19

题解:输入一个数n,有多少个二元组(x,y)满足:1<=x,y<=n,且x和y互素。不难发现除了(1,1)之外,其他二元组的x和y都不相等。设满足x<y的二元组有a【n】个,那么答案就是2*a【n】-1,因为(1,1)时重复了一个1。

#include <iostream>
#include<cstring>
using namespace std;
int a[];
int sums[];
int f[];
int n;
int main()
{
memset(a,,sizeof(a));
a[]=;
for (int i = ; i < ; ++ i)
if (!a[i])
{
for (int j = i ; j < ; j += i)
{
if(!a[j])
a[j] = j;
a[j] = a[j]/i*(i-);
}
} sums[] = ;
for (int i = ; i < ; ++ i)
sums[i] = sums[i-]+a[i];
while (cin >> n && n)
cout << *sums[n]- << endl; return ;
}

uva 10820 (筛法构造欧拉函数)的更多相关文章

  1. Help Tomisu UVA - 11440 难推导+欧拉函数,给定正整数N和M, 统计2和N!之间有多少个整数x满足,x的所有素因子都大于M (2<=N<=1e7, 1<=M<=N, N-M<=1E5) 输出答案除以1e8+7的余数。

    /** 题目:Help Tomisu UVA - 11440 链接:https://vjudge.net/problem/UVA-11440 题意:给定正整数N和M, 统计2和N!之间有多少个整数x满 ...

  2. 筛法求欧拉函数(poj2478

    求1-n的欧拉函数的值 #include <iostream> #include <cstdio> #include <queue> #include <al ...

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

    题意 求Σ{1<=i<N} Σ{i<j<=N} GCD(i, j)     (N<=4000000) 分析 原始思路 暴力求明显是不行的,我们把式子简化形式一下发现它可以 ...

  4. AcWing 874. 筛法求欧拉函数

    #include<bits/stdc++.h> using namespace std; typedef long long ll; ; int primes[N],cnt; int ph ...

  5. C++模板:欧拉函数

    单个欧拉函数 int eular(int n){ int ret=1,i; for(i=2;i*i<=n;i++) if(n%i==0){ n/=i,ret*=i-1; while(n%i==0 ...

  6. Farey Sequence (素筛欧拉函数/水)题解

    The Farey Sequence Fn for any integer n with n >= 2 is the set of irreducible rational numbers a/ ...

  7. ACM学习历程—HYSBZ 2818 Gcd(欧拉函数 || 莫比乌斯反演)

    Description 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对. Input 一个整数N Output 如题 Sample Input 4 Sam ...

  8. 数学知识-欧拉函数&快速幂

    欧拉函数 定义 对于正整数n,欧拉函数是小于或等于n的正整数中与n互质的数的数目,记作φ(n). 算法思路 既然求解每个数的欧拉函数,都需要知道他的质因子,而不需要个数 因此,我们只需求出他的质因子, ...

  9. 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) 此 ...

随机推荐

  1. WCF—Binding

    原文地址:http://www.cnblogs.com/jams742003/archive/2010/01/13/1646379.html Binding描述了哪些层面的信息 一个Binding包含 ...

  2. SRM 402(1-250pt, 1-500pt)

    DIV1 250pt 题意:对于任意一个由1-n组成的数列,其原始顺序为1,2,3..n.给出1~n的一个排列a[n],要通过swp操作将其变回原始顺序.当i < j且a[i] > a[j ...

  3. 配置openStack使用spice

    注:因为在测试配置过程中反复配置过多次,以下内容可能并不完整,有待验证. 按官方文档(openstack-install-guide-yum-juno)搭建和配置的OpenStack默认使用novnc ...

  4. Linux用户与用户组的详解

    1,用户和用户组文件   在linux中,用户帐号,用户密码,用户组信息和用户组密码均是存放在不同的配置文件中的.   在linux系统中,所创建的用户帐号和其相关信息(密码除外)均是存放在/etc/ ...

  5. Stage3D_Game_Programming:渲染3D模型

    OBJ是文件,先来解释下OBJ文件.随便找一个OBJ文件,用文本查看: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 # ...

  6. Gridview导出到Excel

    #region #导出到Excel     protected void Button2_Click(object sender, EventArgs e)     {         Respons ...

  7. Eclipse Python配置

    Macbook上面安装pydev后,发现新建project后并没有PyDev的选项.在官网上搜索后发现是JDK版本太久.上Oracle官网下载了最新JDK(url: http://www.oracle ...

  8. oracle日期时间函数总结

    常常写 sql 的同学应该会接触到一些 oracle 的日期时间函数, 比如: 財务软件或者人力资源软件须要依照每年, 每季度, 每月, 甚至每一个星期来进行统计. 今天闲来没事, 特意从网上整理了一 ...

  9. 【Deep Learning学习笔记】Dynamic Auto-Encoders for Semantic Indexing_Mirowski_NIPS2010

    发表于NIPS2010 workshop on deep learning的一篇文章,看得半懂. 主要内容: 是针对文本表示的一种方法.文本表示可以进一步应用在文本分类和信息检索上面.通常,一篇文章表 ...

  10. [Firebase] Deploy you website to Firebase

    If you are looking for a host website, you can try Firebase, heroku or AWS... Today, I tried to depl ...