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

题意:给N个数,求对每个数ai都满足最小的phi[x]>=ai的x之和。

分析:先预处理出每个数的欧拉函数值phi[x]。对于每个数ai对应的最小x值,既可以二分逼近求出,也可以预处理打表求。

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int maxn = 1100005;
int phi[maxn];
int res[maxn];
bool isprime[maxn];

void Euler(){             //欧拉筛
    for(int i=1;i<maxn;++i) phi[i] = i;
    memset(isprime,1,sizeof(isprime));
    isprime[0] = isprime[1] = false;
    phi[1] =0;
    for(int i=2;i<maxn;++i){
        if(!isprime[i]) continue;
        for(int j=i;j<maxn;j+=i){
            isprime[j] = false;
            phi[j] -= phi[j]/i;
        }
    }
}

void pre(){
    memset(res,0,sizeof(res));
    for(int i=1;i<maxn;++i){
        for(int j=phi[i];j>=0 && res[j]==0;--j){
            res[j] = i;
        }
    }
}

int main()
{
    #ifndef ONLINE_JUDGE
        freopen("in.txt","r",stdin);
        freopen("out.txt","w",stdout);
    #endif
    int T,N,a,cas=1;
    Euler();
    pre();
    scanf("%d",&T);
    while(T--){
        scanf("%d",&N);
        LL sum=0;
        for(int i=0;i<N;++i){
            scanf("%d",&a);
            sum +=res[a];
        }
        printf("Case %d: %lld Xukha\n",cas++,sum);
    }
    return 0;
}

原文地址:https://www.cnblogs.com/xiuwenli/p/9438885.html

时间: 2024-11-08 10:47:19

LightOJ - 1370 Bi-shoe and Phi-shoe (欧拉函数打表)的相关文章

hdu 2824 The Euler function 欧拉函数打表

The Euler function Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description The Euler function phi is an important kind of function in number theory, (n) represents the amount of the numbers which are sm

POJ 2478 欧拉函数打表的运用

http://poj.org/problem?id=2478 此题只是用简单的欧拉函数求每一个数的互质数的值会超时,因为要求很多数据的欧拉函数值,所以选用欧拉函数打表法. PS:因为最后得到的结果会很大,所以结果数据类型不要用int,改为long long就没问题了 #include <iostream> #include <stdio.h> using namespace std; #define LL long long LL F[1000100]; int phi[10001

A - Bi-shoe and Phi-shoe (欧拉函数打表)

Description 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 his students, so he asked his assistant Bi-Shoe to go to the market and buy them. Plenty of

Ligh OJ 1370 Party All the Time (欧拉函数 +素数打表)

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(欧拉函数+打表)

/* 题意: 对于每个数字a[i]找到一个数num[i],num[i]的欧拉函数值大于等于a[i], 求找到的所有数的最小和. */ #include <algorithm> #include <iostream> #include <cmath> #include <cstdio> #include <cstring> #include <map> using namespace std; typedef long long LL;

FZU 1759 欧拉函数 降幂公式

Description Given A,B,C, You should quickly calculate the result of A^B mod C. (1<=A,C<=1000000000,1<=B<=10^1000000). Input There are multiply testcases. Each testcase, there is one line contains three integers A, B and C, separated by a singl

XMU 1615 刘备闯三国之三顾茅庐(三) 【欧拉函数+快速幂+欧拉定理】

1615: 刘备闯三国之三顾茅庐(三) Time Limit: 1000 MS  Memory Limit: 128 MBSubmit: 45  Solved: 8[Submit][Status][Web Board] Description 刘备(161年-223年6月10日),字玄德,东汉末年幽州涿郡涿县,西汉中山靖王刘胜的后代.刘备一生极具传奇色彩,早年颠沛流离.备尝艰辛最终却凭借自己的谋略终成一方霸主.那么在那个风云激荡的年代,刘备又是如何从一个卖草鞋的小人物一步一步成为蜀汉的开国皇帝呢

UVa 11426 (欧拉函数 GCD之和) GCD - Extreme (II)

题意: 求sum{gcd(i, j) | 1 ≤ i < j ≤ n} 分析: 有这样一个很有用的结论:gcd(x, n) = i的充要条件是gcd(x/i, n/i) = 1,因此满足条件的x有phi(n/i)个,其中Phi为欧拉函数. 所以枚举i和i的倍数n,累加i * phi(n/i)即可. 1 #include <cstdio> 2 typedef long long LL; 3 4 const int maxn = 4000000; 5 6 int phi[maxn + 10]

poj3696 快速幂的优化+欧拉函数+gcd的优化+互质

这题满满的黑科技orz 题意:给出L,要求求出最小的全部由8组成的数(eg: 8,88,888,8888,88888,.......),且这个数是L的倍数 sol:全部由8组成的数可以这样表示:((10^x)-1)*(8/9) 那么有m=((10^x)-1)*(8/9)=k*L,answer即满足条件的最小的x 性质1:若ax=by且a和b互质,那么说明a中没有任何b的质因子,b的质因子一定都在x里.所以x是b的倍数. 所以先想方设法在等式中构造两个互质的数以便化简.我们取p=8/gcd(8,L