BZOJ-2190: [SDOI2008]儀仗隊 (歐拉函數)
阿新 • • 發佈:2017-11-03
stdout 根據 size com borde pro tput include return
Submit: 3483 Solved: 2259
[Submit][Status][Discuss]
2190: [SDOI2008]儀仗隊
Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 3483 Solved: 2259
[Submit][Status][Discuss]
Description
作為體育委員,C君負責這次運動會儀仗隊的訓練。儀仗隊是由學生組成的N * N的方陣,為了保證隊伍在行進中整齊劃一,C君會跟在儀仗隊的左後方,根據其視線所及的學生人數來判斷隊伍是否整齊(如下圖)。 現在,C君希望你告訴他隊伍整齊時能看到的學生人數。
Input
共一個數N。
Output
共一個數,即C君應看到的學生人數。
Sample Input
4Sample Output
9HINT
【數據規模和約定】 對於 100% 的數據,1 ≤ N ≤ 40000
Source
這題laj去年一定做過【思考.jpg】歐拉函數裸題
1 #include "bits/stdc++.h" 2 using namespace std; 3 typedef long long LL; 4 const int MAX=40005; 5 int n,phi[MAX],ans; 6 void eular(){ 7 int i,j; 8 for (i=1;i<MAX;i++) phi[i]=i;9 for (i=2;i<MAX;i+=2) phi[i]/=2; 10 for (i=3;i<MAX;i+=2) 11 if (phi[i]==i) 12 for (j=i;j<MAX;j+=i) 13 phi[j]=phi[j]/i*(i-1); 14 } 15 int main(){ 16 freopen ("millitry.in","r",stdin);freopen ("millitry.out","w",stdout); 17 int i,j; 18 scanf("%d",&n); 19 eular(); 20 for (i=1;i<n;i++) ans+=phi[i]; 21 printf("%d",ans*2+1); 22 return 0; 23 }
BZOJ-2190: [SDOI2008]儀仗隊 (歐拉函數)