zoukankan      html  css  js  c++  java
  • Lightoj 1370 素数打表 +二分

    1370 - Bi-shoe and Phi-shoe
    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 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

    Output for Sample Input

    3

    5

    1 2 3 4 5

    6

    10 11 12 13 14 15

    2

    1 1

    Case 1: 22 Xukha

    Case 2: 88 Xukha

    Case 3: 4 Xukha

    题意:给你一个数组a,找到一个最小的值x,使得phi(x)>=phi(a[i]);求x的和最小

    思路:根据欧拉函数,一个素数p的欧拉函数值为p-1;所以最小的数为大于这个数的最小素数;

    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long
    #define esp 0.00000000001
    const int N=1e3+10,M=1e6+1000,inf=1e9+10,mod=1000000007;
    const int MAXN=1000010;
    int prime[MAXN];//保存素数
    bool vis[MAXN];//初始化
    int Prime(int n)
    {
        int cnt=0;
        memset(vis,0,sizeof(vis));
        for(int i=2;i<n;i++)
        {
            if(!vis[i])
            prime[cnt++]=i;
            for(int j=0;j<cnt&&i*prime[j]<n;j++)
            {
                vis[i*prime[j]]=1;
                if(i%prime[j]==0)
                break;
            }
        }
        return cnt;
    }
    int main()
    {
        int cnt=Prime(MAXN);
        int x,y,z,i,t;
        int T,cas=1;
        scanf("%d",&T);
        while(T--)
        {
            scanf("%d",&x);
            ll ans=0;
            for(i=0;i<x;i++)
            {
                scanf("%d",&y);
                int st=0;
                int en=cnt-1;
                while(st<en)
                {
                    int mid=(st+en)>>1;
                    if(prime[mid]<=y)
                    st=mid+1;
                    else
                    en=mid;
                }
                ans+=prime[st];
            }
            printf("Case %d: %lld Xukha
    ",cas++,ans);
        }
        return 0;
    }
  • 相关阅读:
    javascript的语法作用域你真的懂了吗
    网页的三种布局(固定宽度式,流体式,弹性式)
    css3系列之animation
    跟我学习css3之transition
    函数调用你知道几种方法
    javascript的那些事儿你都懂了吗
    css3的那些高级选择器二
    [转]影响Cache的几个HTTP头信息
    CSS属性合写
    defer 与 async
  • 原文地址:https://www.cnblogs.com/jhz033/p/5748801.html
Copyright © 2011-2022 走看看