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 }
  • 相关阅读:
    h5 拍照上传 代码
    java jdbc 链接本地mysql数据库 报错 Access denied for user 'root'@'localhost' (using password: YES)
    react.js 中对props 的理解
    react.js 如何 设置页面div 背景图片
    关于Vue.js 和 react.js 的异同
    如何用 npm ,搭建react 项目
    如何进行vue vux版本更新
    js 继承 函数
    absolute 和 z-index妙用
    关于 white-space: pre-wrap;的灵异现象
  • 原文地址:https://www.cnblogs.com/--lr/p/7399266.html
Copyright © 2011-2022 走看看