标签: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 Bi-shoe and Phi-shoe
标签:gre mil prime .net boto minimum form start ++
原文地址:http://www.cnblogs.com/bolderic/p/7450548.html