洛谷P2158 [SDOI2008]仪仗队
生活随笔
收集整理的這篇文章主要介紹了
洛谷P2158 [SDOI2008]仪仗队
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
題目描述
作為體育委員,C君負責這次運動會儀仗隊的訓練。儀仗隊是由學生組成的N * N的方陣,為了保證隊伍在行進中整齊劃一,C君會跟在儀仗隊的左后方,根據其視線所及的學生人數來判斷隊伍是否整齊(如下圖)。?現在,C君希望你告訴他隊伍整齊時能看到的學生人數。
輸入輸出格式
輸入格式:?
共一個數N
?
輸出格式:?
共一個數,即C君應看到的學生人數。
?
輸入輸出樣例
輸入樣例#1:4 輸出樣例#1:
9
說明
【數據規模和約定】
對于 100% 的數據,1 ≤ N ≤ 40000
?http://www.cnblogs.com/SilverNebula/p/5894679.html
和上面這道題一個樣。
求(N-1)(N-1)矩陣內的互質坐標個數。
1 /*by SilverN*/ 2 #include<algorithm> 3 #include<iostream> 4 #include<cstring> 5 #include<cstdio> 6 #include<cmath> 7 using namespace std; 8 const int mxn=40010; 9 int read(){ 10 int x=0,f=1;char ch=getchar(); 11 while(ch<'0' || ch>'9'){if(ch=='-')f=-1;ch=getchar();} 12 while(ch>='0' && ch<='9'){x=x*10+ch-'0';ch=getchar();} 13 return x*f; 14 } 15 int phi[mxn]; 16 int pri[mxn],cnt=0; 17 bool vis[mxn]; 18 int n; 19 int sum[mxn]; 20 void Euler(){ 21 phi[1]=1; 22 int i,j; 23 for(i=2;i<mxn;i++){ 24 if(!vis[i]){ 25 vis[i]=1;pri[++cnt]=i;phi[i]=i-1; 26 } 27 for(j=1;j<=cnt && i*pri[j]<mxn;j++){ 28 vis[i*pri[j]]=1; 29 if(i%pri[j]==0){phi[i*pri[j]]=phi[i]*pri[j];break;} 30 else phi[i*pri[j]]=phi[i]*(pri[j]-1); 31 } 32 } 33 for(i=1;i<mxn;i++) 34 sum[i]+=sum[i-1]+phi[i]; 35 return; 36 } 37 int main(){ 38 Euler(); 39 n=read(); 40 printf("%d\n",sum[n-1]*2+1); 41 return 0; 42 }?
轉載于:https://www.cnblogs.com/SilverNebula/p/5896926.html
總結
以上是生活随笔為你收集整理的洛谷P2158 [SDOI2008]仪仗队的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 四种常见的MapReduce设计模式
- 下一篇: oracle错误处理及实操-【INS-2