首页 > 其他分享 >Madoka and The Best University (cf E)( 枚举一个其中一个元素,欧拉函数,gcd)

Madoka and The Best University (cf E)( 枚举一个其中一个元素,欧拉函数,gcd)

时间:2023-10-04 19:33:05浏览次数:38  
标签:phi Madoka gcd int University cf vis Maxn 欧拉

#include<iostream>
#include<cstring>
using namespace std;
const int Maxn=1e7;
int phi[Maxn];//记录数的约数个数(欧拉函数) 
bool vis[Maxn];//记录数字是否访问 
int prime[Maxn];//保存素数 
int main()
{
    memset(vis,false,sizeof(vis));
    memset(phi,0,sizeof(phi));
    memset(prime,0,sizeof(prime));
    int n;
    scanf("%d",&n);
    vis[1]=1;//1不是素数 
    for(int i=2;i<=n;i++)
    {
        if(!vis[i])//没有被访问,也就是没有被筛掉,说明是素数 
        {
            vis[i]=!vis[i];
            prime[++prime[0]]=i;
            phi[i]=i-1;
        }
        for(int j=1;j<=prime[0]&&i*prime[j]<=n;j++)
        {
            vis[i*prime[j]]=true;
            if(i%prime[j]==0)//a%b==0,那么phi[a*b]=b*phi[a] 
            {
                phi[i*prime[j]]=phi[i]*prime[j];
                break;
            }
            else phi[i*prime[j]]=phi[i]*(prime[j]-1);//两者互素 
        }
    }
    printf("%d\n",prime[0]);
    for(int i=1;i<=prime[0];i++)
    {
        printf("%d %d\n",prime[i],phi[prime[i]]);
    }
    return 0;
}
View Code

欧拉函数(详细证明+推导) 每日一遍,算法再见!_欧拉函数推导_鲜果维他命的博客-CSDN博客

 

 思路:

  • a+b 是gcd(a,b)的 倍数, 利用调和级数 
  • 然后 gcd 化简 

  •  

    根据此式子可知,x的取值的方案数就是和(j/i)互质并且比它小的数的个数.这就是欧拉函数的定义,那么a,b的取法就有phi[j/i]种. 

标签:phi,Madoka,gcd,int,University,cf,vis,Maxn,欧拉
From: https://www.cnblogs.com/Lamboofhome/p/17742621.html

相关文章

  • CF1234(Div. 3) 题解(A to E)
    AEqualizePricesAgain题解题目大意\(n\)个商品,每个商品价格为\(a_i\),求一个最小的价格\(x\),使得不亏本(即\(\sum\limits_{i=1}^n{(a_i-x)}\ge0\))。解题思路输出平均数向上取整(即\(\left\lceil(\sum\limits_{i=1}^n{a_i})\divn\right\rceil\))即可。代码#include<bit......
  • Madoka and The Corruption Scheme (CF D)(二叉树 整体考虑)
       思路:题意性质:要让某个人赢,从上往下右走了几次到他,因此就是从n轮中选择k次往右走的所有情况ans就是tot- C(n,i)i>k的选择次数,把大的数往里面赛就行了. ......
  • CF1203(Div. 3) 题解(C to F1)
    由于太懒了,所以不想(会)写\(\texttt{AB}\)和\(\texttt{F2}\)。CCommonDivisors题解题目大意给定一个长度为\(n\)的数列\(\{a_i\}\),求\(\sigma(\gcd\limits_{i\in[1,n]}\{a_i\})\)。解题思路先算出所有元素的最大公因数,如果最大公因数\(g\)为\(1\),即所有元素两两......
  • CF1873(Div. 4) 题解 (A to E)
    AShortSort题解题目大意给定一个长度为\(3\)、由\(a,b,c\)组成的字符串,问可以不变或交换两个字符是的变为\(\texttt{abc}\)。解题思路由于大小固定,所以预处理可行的字符串(仅包含\(\texttt{abcacbbaccba}\))即可。代码#include<bits/stdc++.h>usingnamespacest......
  • 题解 CF1034C【Region Separation】/ SS221116D【Xiong AK 10 IOI】
    很妙的性质题!全是意识流证明见过吗?problem每次选一个非空边集删掉,谓之曰砍树。砍树后需要满足每个连通块的点权和相同。在一个方案中可以砍很多次树,都要满足砍树后的要求。一共有多少种合法方案呢?\(n\leq10^6,1\leqa_i\leq10^9\)。solution假如我们将树砍成\(k\)个连通......
  • CF666B World Tour
    WorldTourの传送门\(4\len\le3000\)说明可以用\(n^2\)的做法,题目要求\(4\)个点的最短路最长,共\(3\)条路经,则枚举\(2\)个点。如果枚举\(a,c\),则要找\(b,d\),但\(b\)和\(c\)也要判断路径,比较麻烦,所以直接枚举\(b,c\)。然后枚举\(b,c\)对应的最短路......
  • CF1875B
    赛时没打……题意:给定\(T\)组数据,每组数据给定\(n\)。要求构造一个长度为\(n\)的单调上升序列满足\((3\timesa_{i})\bmod(a_{i-1}+a_{i-2})\ne0\)。首先我们运用幼儿园知识奇偶性可得奇数加奇数等于偶数奇数加偶数等于奇数奇数乘奇数等于奇数所......
  • CF1661D Progressions Covering 题解
    最详细的题解题目传送门:ProgressionsCovering阅读前人题解时,限于个人能力有限,有一些地方想了好一会儿才懂。发现很多题解都是在@SDLTF_凌亭风等作者基础上延伸,但详细程度依旧有限,尽管这篇题解亦是站在他们基础上延伸的,这篇题解更为详细的点明了很多地方。本人第一次写题解,......
  • [题解] CF632F - Swimmers in the Pool
    CF632F-SwimmersinthePool题目传送门题意给定一个大小为\(n\timesn\)的矩阵\(A\)。假设\(A\)满足以下条件,那么称该矩阵为MAGIC,否则为NOTMAGIC,并输出对应的属性(即\(A\)是MAGIC还是NOTMAGIC)。$A_{i,j}=A_{j,i}$;$A_{i,i}=0$;$A_{i,j}\le......
  • [题解]CF1748C Zero-Sum Prefixes
    UPD23.10.3更新的对思路的描述,以及代码。思路对于每一个\(a_i=0\),如果我们将它变为\(x\),都可以直接将\(i\simn\)位置上的前缀和加\(x\)。设\(a_j\)是\(a_i\)后第一个\(0\),那么,在\(j\)时同样有上述规律。所以,我们只需在\(i\)时考虑,\(i\sim(j-1)\)的贡......