zoukankan      html  css  js  c++  java
  • lightoj1370欧拉函数

    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 nwhich 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

    bamboo的score值就是其长度x的欧拉函数值(即小于x且与x互质的数的个数)欧拉函数有一个性质:素数p的欧拉函数值为p-1;

     1 #include <iostream>
     2 #include <cstdio>
     3 using namespace std;
     4 int a[1000000+10];
     5 int t,n,x;
     6 long long sum;
     7 int b[1000000+10]={1,1,0};
     8 void f()
     9 {
    10     for(int i=2;i<=1000000+9;i++)
    11     {
    12         if(!b[i])
    13         {
    14             for(int j=i+i;j<=1000000+9;j+=i)
    15                 b[j]=1;
    16         }
    17     }
    18 }
    19 int main()
    20 {
    21     f();
    22     while(scanf("%d",&t)!=EOF)
    23     {
    24         for(int w=1;w<=t;w++)
    25         {
    26             sum=0;
    27             scanf("%d",&n);
    28             for(int i=1;i<=n;i++)
    29             {
    30                 scanf("%d",&x);
    31                 for(int k=x+1;k<=1000000+9;k++)
    32                 {
    33                     if(b[k]==0)
    34                     {
    35                         sum+=k;
    36                         break;
    37                     }
    38                 }
    40             }
    41             printf("Case %d: %lld Xukha
    ",w,sum);
    42         }
    43 
    44 
    45     }
    46     return 0;
    47 }
  • 相关阅读:
    SqlServer 查看数据库中所有存储过程
    SqlServer 查看数据库中所有视图
    SqlServer 查询表的详细信息
    SqlServer 遍历修改字段长度
    net core 操作Redis
    Tuning SharePoint Workflow Engine
    Open With Explorer
    Download language packs for SharePoint 2013
    Change Maximum Size For SharePoint List Template when Saving
    Six ways to store settings in SharePoint
  • 原文地址:https://www.cnblogs.com/--lr/p/7399266.html
Copyright © 2011-2022 走看看