日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

仪仗队

發布時間:2024/4/17 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 仪仗队 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【題目描述】

儀仗隊是由學生組成的N*N的方陣,為了保證隊伍在行進中整齊劃一,C君會跟在儀仗隊的左后方,根據其視線所及的學生人數來判斷隊伍是否整齊(如下圖)。現在,C君希望你告訴他隊伍整齊時能看到的學生人數。

【輸入描述】

一個數N。

【輸出描述】

一個數,即C君應看到的學生人數。

【輸入樣例】

4

【輸出樣例】

9

【數據范圍及提示】

對于100%的數據,1 ≤ N ≤ 40000。

?

回放一下那些年,我與數論的舊時光(Euler函數鎮樓!):

源代碼:#include<cstdio> int N,Num(0),Prime[10001]; bool Flag[30001]={0}; void Solve() //歐拉O(n)篩法。 {for (int a=2;a<=N;a++){if (!Flag[a]) //沒有被篩走,質數無疑。Prime[Num++]=a;for (int b=0;b<Num&&a*Prime[b]<=N;b++) //注意范圍。 {Flag[a*Prime[b]]=true;if (!(a%Prime[b])) //肯定就不是最小素因子啦。break;}} } int main() //輸入一個數N,求出2~N之間素數的個數。 {scanf("%d",&N);Solve();printf("%d",Num);return 0; }/*利用了每一個合數必定有1個最小素因子的事實,每個合數被其對應的最小素因子篩去,O(n)無疑。 */

?

正解:

源代碼:#include<cstdio> int n,ans(0),Phi[40001]={0}; void Work() {Phi[1]=1;for (int a=2;a<=n;a++)if (!Phi[a]) //質數無疑。for (int b=a;b<=n;b+=a) //由以下式子轉換得來的。 {if (!Phi[b])Phi[b]=b;Phi[b]=Phi[b]/a*(a-1);} } int main() //該算法在O(n)內篩素數的同時求出所有數的歐拉函數。 {scanf("%d",&n);Work();for (int a=1;a<n;a++)ans+=Phi[a];printf("%d",2*ans+1);return 0; }/*設P為質數。需要用到以下幾個性質:(1)φ(P)=P-1;(2)如果i%P=0,則有φ(i*P)=P*φ(i);(并不是完全積性函數)(3)如果i%P≠0,則有φ(i*P)=(P-1)*φ(i);證明如下:(1)P的因數除了1以外只有P;(2)利用歐拉函數通式可證;(3)P為質數,i%P≠0可得i互質,利用歐拉函數的積性可得φ(i*P)=(P-1)*φ(i); */

轉載于:https://www.cnblogs.com/Ackermann/p/5806052.html

總結

以上是生活随笔為你收集整理的仪仗队的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。