一開始還以為求方程(φ(n))^x≡1的解。。後來看了半天沒有發現模數。原來下面還有樣例解釋。。注意到解釋中有乙個φ(2)=1,即為這道題目的突破口。
乙個顯然的事實是,要消去pi這個質數,至少需要qi次。而求一次φ(x),pi就會分解出乙個質因數2。而2分解以後就只剩下1了。而每次只能消去1個2,所以實際上是求能夠分解出多少個2。
假設對於奇數m,能分解出x個2,則顯然x+1次分解是必要的。下面說明x+1次充分。首先分解出第乙個2需要1次,在後面的分解中,對於乙個不為2的質數,其分解又會產生乙個2。所以2的次數必然不少於不為2的數的分解次數。將2分解完需要x+1次,其餘數在<=x的步驟內已經分解完畢了,所以總步數為x+1。那麼當m為偶數時,一開始就有2了,所以只需要x次。
所以關鍵是乙個數能分解出多少個2,設為f(x),顯然x為完全積性函式,線性篩求一下就好了。
ac**如下:
#include#include#define ll long long
using namespace std;
int m,n,cnt,f[100005],c[100005];
void pfs()
for (j=1; j<=cnt; j++) }}
int main()
printf("%lld\n",ans+(ll)flag);
} return 0;
}
by lych
2015.12.19
bzoj2749 數論 外星人
description input output 輸出test行,每行乙個整數,表示答案。sample input 2 2 3 1sample output hint test 50 pi 105,1 q1 109 題解 其實hint裡面那張圖告訴了我們做法 如果p ip i pi 是大於2的質數,...
2749 HAOI2012 外星人 數論
這個題的關鍵是要找出乙個與操作次數相關的量。這個量就是2 22在取 phi 過程中的2 22因子個數。因為如果一開始沒有2 22,那麼在某乙個大於2 22的質數 1 1 1後就會出現,一開始有2 22,那麼這次就會把這個2 22變成1 11。所以算一下過程中2 22的個數即可。include usi...
bzoj 2251 外星聯絡
題意 給出乙個字串,求出現次數超過1的子串的出現個數 字串長度 3000 題解 題目問的是子串的個數,那麼首先我們要找到所有的子串 而字串的所有字尾的字首可以不重不漏的表示所有子串 那麼如果將所有的字尾加入trie樹,每個經過的結點 也就是這個字尾的字首 計數 1 然後題目要求按字典序輸出,利用一下...