D-(example) Euler function properties
crawling in process ... crawling failed Time limit:2000MS Memory Limit:32768KB 64bit IO Format:%lld &%llu
Submit Status
Description
Bamboo Pole-vault is a massively popular sport in Xzhiland. And Master Phi-shoe is a very popular coaches 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!) is available in the market. According to Xzhila tradition,
Score of a bamboo = Φ (bamboo ' s length)
(Xzhilans is really fond of number theory). For your information, Φ (n) = numbers less than n which is relatively prime (having no common divisor o Ther than 1) to N. So, score of a bamboo of length 9 is 6 as 1, 2, 4, 5, 7, 8 were relatively prime to 9.
The assistant Bi-shoe have to buy one bamboo for each student. As a twist, each pole-vault student of Phi-shoe have a lucky number. Bi-shoe wants to buy bamboos such, each of them gets a bamboo with a score greater than or equal to his/her lucky numb Er. 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 would 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
The main idea of this problem is to give you a number N, so that you find the smallest K meet & (k) >=n (& refers to Euler function)
Analysis of Ideas: the simple properties of Euler functions are investigated, that is, the first prime number that satisfies & (k) >=n is n+1z.
Code:
#include <iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>using namespaceStd;typedefLong Longll;Const intmaxn=1e6+ -;intPHI[MAXN];intPRIME[MAXN];BOOLCHECK[MAXN];inttot;voidMake_phi () {tot=0; memset (check,true,sizeof(check)); phi[1]=1; for(intI=2; i<=maxn;i++) { if(Check[i]) {Prime[tot++]=i; Phi[i]=i-1; } for(intj=0; j<tot&&i*prime[j]<=maxn;j++) {Check[i*prime[j]]=false; if(i%prime[j]==0) {Phi[i*prime[j]]=phi[i]*Prime[j]; Break; } Elseprime[i*prime[j]]=phi[i]* (prime[j]-1); } }}intKase;intMain () {intT; Make_phi (); scanf ("%d",&T); Kase=0; ll num; while(t--) { intN; scanf ("%d",&N); ll ans=0; while(n--) {scanf ("%lld",&num); ll K=num+1; for(ll i=k;; i++) { if(Check[i]) {ans+=i; Break; }}} printf ("Case %d:%lld xukha\n",++Kase,ans); }}
View Code
lightOJ1370 Euler function Properties