码迷,mamicode.com
首页 > 其他好文 > 详细

LightOJ - 1370 Bi-shoe and Phi-shoe

时间:2017-08-29 22:58:23      阅读:272      评论:0      收藏:0      [点我收藏+]

标签:gre   mil   prime   .net   boto   minimum   form   start   ++   

题目链接http://lightoj.com/login_main.php?url=volume_showproblem.php?problem=1370

题目大意:给N个数a[i], N <= 1e6,问使 Φ(x) >= a[i] 成立的最小x的所有x的和是多少。

解题思路:我们知道的是对于素数 m 来说,phi[m] = m - 1。另一方面,对于一个合数 m 来说, phi[m] < phi[x] , x > m && x 是素数。

因此,我们可以认为,每个非素数 m, 对应的 x 值是大于x的最小素数减一。

代码:

 1 const int maxn = 2e6 + 100;
 2 vector<int> primes;
 3 int n, a[maxn];
 4 bool vis[maxn];
 5 int lphi[maxn];
 6 
 7 void dowork(){
 8     memset(vis, 0, sizeof(vis));
 9     int mxn = 2e6 + 5;
10     for(int i = 2; i <= mxn; i++)
11         for(int j = i * 2; j <= mxn; j += i)
12             vis[j] = 1;
13     for(int i = 2; i <= mxn; i++)
14         if(!vis[i]) primes.push_back(i);
15     for(int i = 0; i < primes.size(); i++) lphi[primes[i] - 1] = primes[i];
16     int i = 1, j = 0;
17     while(i < 2e6 + 5){
18         int x = primes[j] - 1;
19         if(i <= x) lphi[i] = lphi[x];
20         else {
21             x = primes[++j] - 1;
22             lphi[i] = lphi[x];
23         }
24         i++;
25     }
26 } 
27 ll solve(){
28     ll ans = 0;
29     for(int i = 1; i <= n; i++){
30         ans += lphi[a[i]];
31     }
32     return ans;
33 }
34 int main(){
35     dowork();
36     int T;
37     scanf("%d", &T);
38     for(int t = 1; t <= T; t++){
39         scanf("%d", &n);
40         for(int i = 1; i <= n; i++) scanf("%d", a + i);
41         ll ans = solve();
42         printf("Case %d: %lld Xukha\n", t, ans);
43     }
44 }

题目: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

 

LightOJ - 1370 

LightOJ - 1370 Bi-shoe and Phi-shoe

标签:gre   mil   prime   .net   boto   minimum   form   start   ++   

原文地址:http://www.cnblogs.com/bolderic/p/7450548.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!