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

题意:

题目背景略去,将这道题很容易转化为,给出n求,n以内的有序数对(x, y)互素的对数。

分析:

问题还可以继续转化。

根据对称性,我们可以假设x<y,当x=y时,满足条件的只有(1, 1)。

设f(n)为 集合S{(x, y) | x<y且x、y互素} 的个数,则所求答案为2f(n)+1

f(n)表达式为:

,其中φ(n)为欧拉函数

这里有欧拉函数的一些介绍

 1 #include <cstdio>
 2
 3 const int maxn = 50000;
 4
 5 int phi[maxn + 10], sum[maxn + 10];
 6
 7 void phi_table(int n)
 8 {
 9     phi[1] = 0;
10     for(int i = 2; i <= maxn; ++i) if(!phi[i]) //说明i为素数
11     {
12         for(int j = i; j <= maxn; j += i)
13         {
14             if(!phi[j]) phi[j] = j;
15             phi[j] = phi[j] / i * (i - 1);
16         }
17     }
18 }
19
20 int main()
21 {
22     phi_table(maxn);
23     sum[1] = phi[1];
24     for(int i = 2; i <= maxn; ++i) sum[i] = sum[i - 1] + phi[i];
25
26     int n;
27     while(scanf("%d", &n) == 1 && n) printf("%d\n", 2*sum[n]+1);
28
29     return 0;
30 }

代码君

时间: 2024-12-18 00:48:24

UVa 10820 (打表、欧拉函数) Send a Table的相关文章

UVA 11440 - Help Tomisu(欧拉函数)

UVA 11440 - Help Tomisu 题目链接 题意:给定n和m,求[2,n!]中,所有质因子个数都大于m的个数 思路:?(m!)表示小于m!并与m!互质的个数,而与m!互质的个数,他的质因子肯定不包含1-m,因此就是满足条件的.然后对于这题而言,则是要求n!中,不与m!互质的个数,答案取模100000007 那么先看一个证明: 求kn中与n互质的个数,答案为k?(n). ?(n)表示1-n中与n互质的个数,那么由此考虑[n + 1, 2n], [2n + 1, 3n]...这每个区间

uva 11317 - GCD+LCM(欧拉函数+log)

题目链接:uva 11317 - GCD+LCM 题目大意:给定n,求出1~n里面两两的最大公约的积GCD和最小公倍数的积LCM,在10100进制下的位数. 解题思路:在n的情况下,对于最大公约数为i的情况又phi[n/i]次.求LCM就用两两乘积除以GCD即可. #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> using namespace std; ty

HDU5597/BestCoder Round #66 (div.2) GTW likes function 打表欧拉函数

GTW likes function Memory Limit: 131072/131072 K (Java/Others) 问题描述 现在给出下列两个定义: f(x)=f_{0}(x)=\sum_{k=0}^{x}(-1)^{k}2^{2x-2k}C_{2x-k+1}^{k},f_{n}(x)=f(f_{n-1}(x))(n\geq 1)f(x)=f?0??(x)=∑?k=0?x??(−1)?k??2?2x−2k??C?2x−k+1?k??,f?n??(x)=f(f?n−1??(x))(n≥1

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

/** 题目:Help Tomisu UVA - 11440 链接:https://vjudge.net/problem/UVA-11440 题意:给定正整数N和M, 统计2和N!之间有多少个整数x满足,x的所有素因子都大于M (2<=N<=1e7, 1<=M<=N, N-M<=1E5) 输出答案除以1e8+7的余数. 思路: lrjP338 由于x的所有素因子都>M:那么x与M!互质. 根据最大公约数的性质,对于x>y,x与y互质,那么x%y与y也互质. 由于N

POJ 2407 Relatives &amp;&amp; UVA 10299 Relatives(欧拉函数)

[题目链接]:click here~~ [题目大意]:欧拉函数:求少于或等于n的数中与n互素的数的个数:n <= 1,000,000,000. [思路]:裸欧拉函数,注意特判n==1的情况,n==1的情况下,应该输出0,poj依然判断1也可以过,但是老牌ojUVA必须是0才过,注意一下. 代码: #include <stdio.h> #include <string.h> #include <iostream> #include <algorithm>

hihoCoder 1298 : 数论五&#183;欧拉函数

#1298 : 数论五·欧拉函数 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho有时候会用密码写信来互相联系,他们用了一个很大的数当做密钥.小Hi和小Ho约定了一个区间[L,R],每次小Hi和小Ho会选择其中的一个数作为密钥. 小Hi:小Ho,这次我们选[L,R]中的一个数K. 小Ho:恩,小Hi,这个K是多少啊? 小Hi:这个K嘛,不如这一次小Ho你自己想办法算一算怎么样?我这次选择的K满足这样一个条件: 假设φ(n)表示1..n-1中与n互质的数

poj2478欧拉函数

打表欧拉函数,求2到n的欧拉函数和 #include<map> #include<set> #include<cmath> #include<queue> #include<stack> #include<vector> #include<cstdio> #include<cassert> #include<iomanip> #include<cstdlib> #include<c

UVA 10820 Send a Table 数论 欧拉函数

题目链接: https://vjudge.net/problem/UVA-10820 题目描述: 给你一个N, N <= 50000, 让你寻找N之内互素数的个数 解题思路: 欧拉函数, 由于位置颠倒是两个解, 在小于N的范围内只有(1, 1)x, y相等, 其他的都是不等的, 所以我们只需要算phi(2) + phi(3) + ...... phi(n), 然后 * 2 + 1即可 代码: #include <iostream> #include <cstdio> #inc

Uva 10820 Send a Table(欧拉函数)

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