LightOJ 1370- Bi-shoe and Phi-shoe
https://vjudge.net/contest/312835#problem
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
Score就是对应长度的欧拉函数
从lucky number+1开始递增 选择第一个出现的质数作为cost
代码
1 #include <bits/stdc++.h> 2 #include <iostream> 3 #include <cstring> 4 #include <stack> 5 #include <cstdlib> 6 #include <queue> 7 #include <cmath> 8 #include <cstdio> 9 #include <algorithm> 10 #include <string> 11 #include <vector> 12 #include <list> 13 #include <iterator> 14 #include <set> 15 #include <map> 16 #include <utility> 17 #include <iomanip> 18 #include <ctime> 19 #include <sstream> 20 #include <bitset> 21 #include <deque> 22 #include <limits> 23 #include <numeric> 24 #include <functional> 25 26 #define gc getchar() 27 #define mem(a) memset(a,0,sizeof(a)) 28 #define mod 1000000007 29 #define sort(a,n,int) sort(a,a+n,less<int>()) 30 #define fread() freopen("in.in","r",stdin) 31 #define fwrite() freopen("out.out","w",stdout) 32 using namespace std; 33 34 typedef long long ll; 35 typedef char ch; 36 typedef double db; 37 38 const int maxn=1e5+10; 39 int aa[maxn]; 40 41 int fun(int a) 42 { 43 int i , m; 44 for(int n = a+1;;n++) 45 { 46 m = sqrt(n); 47 for(i=2;i<=m;i++) 48 { 49 if(n%i==0) break; 50 } 51 if (i>m) 52 { 53 return n; 54 } 55 } 56 } 57 58 int main() 59 { 60 int t , n , sum = 0; 61 int a[10005] = {0}; 62 cin >> t; 63 for(int j = 1;j<=n;j++) 64 { 65 cin >> n; 66 for(int i = 0;i<n;i++) 67 { 68 cin>>a[i]; 69 } 70 for(int i = 0;i<n;i++) 71 { 72 sum+=fun(a[i]); 73 } 74 cout<<"Case "<<j<<": "<<sum<<" Xukha"; 75 sum = 0; 76 } 77 return 0; 78 }