UVA10820 send a table

题意:对(x,y),1<=x,y<=n 求出有多少对(x,y)互质

题解:筛法跑一遍欧拉就好了

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
ll phi[50001];
void init()
{
    for(int i=1;i<=50000;i++) phi[i]=i;
    for(int i=2;i<=50000;i++)
    {
        if(phi[i]==i)
        {
            for(int j=i;j<=50000;j+=i)
            {
                phi[j]=phi[j]/i*(i-1);
            }
        }
    }
}
int main()
{
    ll n;
    init();
    //cout<<phi[2]<<endl;
    while(cin>>n&&n)
    {
        ll sum=0;
        for(int i=2;i<=n;i++) sum+=phi[i];
        sum*=2;
        cout<<sum+1<<endl;
    }
    return 0;
}
时间: 2025-01-01 11:19:10

UVA10820 send a table的相关文章

uva10820 send a table (nlogn求1-n欧拉函数值模版

//重点就是求1-n的欧拉函数啦,重点是nlogn求法的版 //大概过程类似于筛选法求素数 1 #include<cstdio> 2 #include<iostream> 3 #include<cmath> 4 #include<algorithm> 5 #include<cstring> 6 #include<cstdlib> 7 #include<queue> 8 #include<vector> 9 #i

UVA 10820 Send a Table euler_phi功能

除1,1其他外国x,y不等于 为 x<y 案件 一切y有phi(y)组合 F[x]= phi(i) 2<=i<=x 结果为 2*F[x]+1 Problem A Send a Table Input: Standard Input Output: Standard Output When participating in programming contests, you sometimes face the following problem: You know how to calc

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

https://vjudge.net/problem/UVA-10820 题意: 有一张表 f[x][y],共x*y个数 现在要删去所有的 f[x*k][y*k] ,k>1 最后还剩多少个数 题意转化:有多少个二元组(x,y)满足 gcd(x,y)=1 若x<y,则 f[][y]=phi(y) 所以 ans= (2* Σ phi(y))+1   y∈[2,n] 加的1为(1,1) 线性筛出欧拉函数求和即可 #include<cstdio> #define N 50001 using

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 ph

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

D - Send a Table (UVA - 10820)

- 题目大意 给出一个n,求从1~n中任意两个数互质的对数为多少,(a,b)和(b,a)算两对. - 解题思路 构造一个欧拉函数的方法,然后用一个数组去存储下标,因为(a,b)和(b,a)算两对,所以每一个都加两倍,但(1,1)很特殊,所以最后减一就行了. - 代码 #include<iostream> #include<cmath> #include<cstring> using namespace std; const int MAX = 600000; int p

算法竞赛入门10.2计数与概率基础例题代码

10.6 Irrelevant Elements UVA1635 思路:基础组合计数 #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> const int N = 1e5+5; using namespace std; long long C[N][20]; int prime[20][2]; inline int judge(int x,int m,int k) {

php CI框架基础知识

一. CI框架的MVC导图 二. CI框架目录文件介绍 (1)index.php  单入口         整个框架对外暴露的唯一访问文件 (2)application  应用文件(放置用户信息,用户控制器.用户模板等) application/cache            --->   缓存 application/config            --->   配置文件 application/controllers        --->   控制器 application/