欧拉函数 || LightOJ 1370 Bi-shoe and Phi-shoe

给出x,求最小的y使y的欧拉函数大于等于x

*解法:i).求出1e6之内的数的欧拉函数,遍历找

ii).求比x大的第一个质数——因为每个质数n的欧拉函数都是n-1

wa一次是因为SZ写小了……

#include <iostream>
#include <cstdio>
using namespace std;
#define SZ 1000005
long long phi[SZ], a[SZ];
void getphi(int n)
{
    for(int i = 2; i <= n; i++) phi[i] = 0;
    phi[1] = 0;
    for(long long i = 2; i <= n; i++)
    {
        if(!phi[i])
            for(long long j = i; j <= n; j += i)
            {
                if(!phi[j]) phi[j] = j;
                phi[j] = phi[j] / i * (i - 1);
            }
    }
}
int main()
{
    int T, cc = 0;
    scanf("%d", &T);
    phitable(SZ);
    while(T--)
    {
        int n;
        scanf("%d", &n);
        long long ans = 0;
        for(int i = 0; i < n; i++)
            scanf("%lld", &a[i]);
        sort(a, a+n);
        long long j = 0, i = 0;
        while(i < n)
        {
            if(a[i] > phi[j]) {j++; continue;}
            ans += j;
            i++;
        }
        printf("Case %d: %lld Xukha\n", ++cc, ans);
    }
    return 0;
}

原文地址:https://www.cnblogs.com/pinkglightning/p/8410660.html

时间: 2024-11-13 06:55:50

欧拉函数 || LightOJ 1370 Bi-shoe and Phi-shoe的相关文章

P2158 [SDOI2008] 仪仗队(欧拉函数模板)

题目描述 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是否整齐(如下图). 现在,C君希望你告诉他队伍整齐时能看到的学生人数. 分析就不写了都写得很<<<<全>>>>了就当看模板叭 #include<iostream> #include<cstdio> using namespace std; typede

线性求欧拉函数

我们都知道欧拉筛又称线性筛,能在O(n)的时间复杂度内筛出n以内的所有质数,而我们只要在线性筛的代码上改良一下就能求出n以内所有数的欧拉函数了.筛质数时,设外层在枚举i,内层枚举到prime[j],这时有两种情况: i%prime[j]不为0,也就是说,i与j互质,根据欧拉函数的积性可得phi[ i * prime[j] ]=phi[ i ]*phi[ prime[j] ]而这些是前面求出来的,可以直接拿来推. i%prime[j]为0,也就是说,i内有一个质因子是prime[j],不过没有关系

GuGuFishtion HDU - 6390 (欧拉函数,容斥)

GuGuFishtion \[ Time Limit: 1500 ms\quad Memory Limit: 65536 kB \] 题意 给出定义\(Gu(a, b) = \frac{\phi(ab)}{\phi(a)\phi(b)}\) 求出\(\sum_{a=1}^{m}\sum_{b=1}^{n}Gu(a,b) (mod p)\) 思路 首先对于欧拉函数,我们知道欧拉函数的朴素式子为:\(\phi(n) = n*(1-\frac{1}{p1})*(1-\frac{1}{p2}) * ..

莫比乌斯反演欧拉函数杜教筛大总结

莫比乌斯函数 定义 设\(n=\prod_{i=1}^{k} p_i^{c_i}\),则\(\mu(n)=(-1)^k\),特别地\(\mu(1)=1\). 性质 最常用性质 \(\sum_{d|n}\mu(d)=[n=1]\) 反演性质 \(F(n)=\sum_{d|n}f(d) \Longleftrightarrow f(n)=\sum_{d|n}F(d)\mu(\frac{n}{d})\) \(F(n)=\sum_{n|d}f(d) \Longleftrightarrow f(n)=\su

LightOJ 1370 欧拉函数

1.LightOJ 1370  Bi-shoe and Phi-shoe   欧拉函数 2.总结: #include<iostream> #include<cstring> #include<cmath> #include<queue> #include<algorithm> #include<cstdio> #define max(a,b) a>b?a:b #define F(i,a,b) for (int i=a;i<

LightOJ 1370 Bi-shoe and Phi-shoe(欧拉函数)

http://lightoj.com/login_main.php?url=volume_showproblem.php?problem=1370 题意: 给一些数Ai(第 i 个数),Ai这些数代表的是某个数欧拉函数的值,我们要求出数 Ni 的欧拉函数值不小于Ai.而我们要求的就是这些 Ni 这些数字的和sum,而且我们想要sum最小,求出sum最小多少. 思路:素数P的欧拉函数值为P-1. 所以对于一个给出的数,我们去寻找大于它的第一个素数即可. 1 #include<iostream>

LightOJ Bi-shoe and Phi-shoe 1370【欧拉函数+素数打表】

1370 - Bi-shoe and Phi-shoe PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 MB Bamboo Pole-vault is a massively popular sport in Xzhiland. And Master Phi-shoe is a very popular coach for his success. He needs some bamboos for

LightOJ 1370 Bi-shoe and Phi-shoe 欧拉函数+线段树

分析:对于每个数,找到欧拉函数值大于它的,且标号最小的,预处理欧拉函数,然后按值建线段树就可以了 #include <iostream> #include <stdio.h> #include <string.h> #include <algorithm> #include <cmath> #include <map> using namespace std; typedef long long LL; const int N = 1

light_oj 1370 欧拉函数+二分

light_oj 1370 欧拉函数+二分 A - Bi-shoe and Phi-shoe Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu Submit Status Description Bamboo Pole-vault is a massively popular sport in Xzhiland. And Master Phi-shoe is a very popular coac