• Bi-shoe and Phi-shoe(欧拉函数变形)


    Bi-shoe and Phi-shoe
    Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu

    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 Bamboos of all possible integer lengths (yes!) are available in the market. According to Xzhila tradition,

    Score of a bamboo = Φ (bamboo's length)

    (Xzhilans are really fond of number theory). For your information, Φ (n) = numbers less than n which are relatively prime (having no common divisor other than 1) to n. So, score of a bamboo of length 9 is 6 as 1, 2, 4, 5, 7, 8 are relatively prime to 9.

    The assistant Bi-shoe has to buy one bamboo for each student. As a twist, each pole-vault student of Phi-shoe has a lucky number. Bi-shoe wants to buy bamboos such that each of them gets a bamboo with a score greater than or equal to his/her lucky number. Bi-shoe wants to minimize the total amount of money spent for buying the bamboos. One unit of bamboo costs 1 Xukha. Help him.

    Input

    Input starts with an integer T (≤ 100), denoting the number of test cases.

    Each case starts with a line containing an integer n (1 ≤ n ≤ 10000) denoting the number of students of Phi-shoe. The next line contains n space separated integers denoting the lucky numbers for the students. Each lucky number will lie in the range [1, 106].

    Output

    For each case, print the case number and the minimum possible money spent for buying the bamboos. See the samples for details.

    Sample Input

    3

    5

    1 2 3 4 5

    6

    10 11 12 13 14 15

    2

    1 1

    Sample Output

    Case 1: 22 Xukha

    Case 2: 88 Xukha

    Case 3: 4 Xukha


    题意:

    给一些数Ai(第 i 个数),Ai这些数代表的是某个数欧拉函数的值,我们要求出数 Ni 的欧拉函数值不小于Ai。而我们要求的就是这些 Ni 这些数字的和sum,而且我们想要sum最小,求出sum最小多少。


    解题思路:

    要求和最小,我们可以让每个数都尽量小,那么我们最后得到的肯定就是一个最小值。

    给定一个数的欧拉函数值ψ(N),我们怎么样才能求得最小的N?

    我们知道,一个素数P的欧拉函数值ψ(P)=P-1。所以如果我们知道ψ(N),那么最小的N就是最接近ψ(N),并且大于ψ(N)的素数。我们把所有素数打表之后再判断就可以了。



    渣B的二分查找

    #pragma comment(linker, "/STACK:102400000,102400000"
    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<cstdlib>
    #include<iostream>
    #include<algorithm>
    #include<vector>
    #include<map>
    #include<queue>
    #include<stack>
    #include<string>
    #include<map>
    #include<set>
    #include<ctime>
    #define eps 1e-6
    #define MAX 1000010
    #define INF 0x3f3f3f3f
    #define LL long long
    #define pii pair<int,int>
    #define rd(x) scanf("%d",&x)
    #define rd2(x,y) scanf("%d%d",&x,&y)
    ///map<int,int>mmap;
    ///map<int,int >::iterator it;
    using namespace std;
    
    bool isprm[MAX];
    int prm[100000],cnt=0;
    void isprime()
    {
        memset(isprm,1,sizeof(isprm));
        isprm[0]=isprm[1]=false;
        for(int i=2; i<MAX; ++i)
        {
            if(isprm[i])
            {
                for(int j=2*i; j<MAX; j+=i)
                    isprm[j]=false;
                prm[cnt++]=i;
            }
        }
    }
    int binsear(int tmp)
    {
        int l=0,r=cnt;
        while(l<=r)
        {
            int mid=(l+r)/2;
            if (prm[mid] > tmp)
                r = mid - 1;
            else
                l=mid + 1;
        }
        for(int i=max(r,0);;i++)
            if(prm[i]>tmp)
            return prm[i];
    }
    int main ()
    {
        isprime();
        int T,n,Case=1;
        rd(T);
        while(T--)
        {
            rd(n);
            LL sum=0,tmp;
            for(int i=0; i<n; i++)
            {
                rd(tmp);
                sum+=binsear(tmp);
                //cout<<sum<<' ';
            }
            printf("Case %d: %lld Xukha
    ",Case++,sum);
        }
        return 0;
    }


  • 相关阅读:
    python的函数
    Python的条件语句和循环语句
    Python的输入与输出
    Python变量和类型
    Python的运算符
    Python的注释
    pycharm基本使用
    推特史上最大规模黑客入侵案:17岁问题少年的隐秘人生
    进程和线程的区别及线程的介绍
    python接口自动化42
  • 原文地址:https://www.cnblogs.com/zswbky/p/6717951.html
Copyright © 2020-2023  润新知