計蒜客T1581(尤拉函式)ACM

2021-10-08 18:28:30 字數 1032 閱讀 1448

題目:

這裡我們定義 φ(n) 表示所有小於等於 n 與 n 互質數的個數。

例如 φ(10)=4,因為我們可以在 1∼10 中找到 1,3,7,9 與 10 互質。

第一行輸入乙個整數 t,表示測試資料組數。

接下來 t 行,每行有乙個整數 n。

對於每組測試資料輸出 φ(n) 。

1 ≤ t ≤ 10^6,1 ≤ n ≤ 10^6。

輸出時每行末尾的多餘空格,不影響答案正確性

樣例輸入

3210

100

樣例輸出

1

440

題解:1.此題很簡單,就是求尤拉函式(尤拉函式可以參見這篇部落格:

2.有三種方法求尤拉函式,本題資料量巨大,直接求肯定不行,需要先打表,剩下兩種:埃拉託斯特尼篩和尤拉篩

埃拉託斯特尼篩:

void euler(int n)}}

}

尤拉篩:

//phi尤拉函式  prime質數  vis標記

int euler(int n)

for (int j=0; j3.資料量大,用cin會超時,所以用scanf;

ac**:

尤拉篩:

#includeint phi[1000005],prime[1000005],vis[1000005];

void eulerhmd(int n)

for (int j=0; j埃拉託斯特尼篩:

#include int phi[1000005];

void euler(int n)}}

}int main()

return 0;

}

計蒜客t36352 魔法

肯定我要佔滿所有的葉子結點,否則以乙個葉子節點建樹的時候你選的所有點就都在一棵子樹裡,也就不符合要求。反過來,選擇了所有葉子節點,可以證明它是可行的,所以葉子節點構成的集合滿足要求而且最小。如果k 0 k 0k 0直接求出度為1 11的點的數目就好了 如果k 1 k 1k 1,列舉刪哪條邊,我用 x...

紅與黑 計蒜客 T1211

題目鏈結 典型的深搜題,基礎題。蒜廠有一間長方形的房子,地上鋪了紅色 黑色兩種顏色的正方形瓷磚。你站在其中一塊黑色的瓷磚上,只能向相鄰的黑色瓷磚移動。請寫乙個程式,計算你總共能夠到達多少塊黑色的瓷磚。輸入格式第一行是兩個整數 w和 h,分別表示 x 方向和 y 方向瓷磚的數量。w 和 h 都不超過 ...

計蒜客T1195 和數

蒜頭君給定乙個正整數序列,判斷其中有多少個數,等於數列中其他兩個數的和。比如,對於數列1 2 3 4,這個問題的答案就是 2,因為 3 2 1,4 1 3。輸入格式 共兩行,第一行是數列中數的個數 n 1 n 100 第二行是由 n 個不大於 10000 的正整數組成的數列,相鄰兩個整數之間用單個空...