HAOI2012 外星人(尤拉函式 遞推)

2022-03-17 00:07:54 字數 720 閱讀 5126

給乙個數n,求它經過多少次取\(phi\)可以變成1

由於只有\(\varphi_\)和\(\varphi_\)為1,所以原數變成1的過程必經2,由

可知一次操作只能消掉乙個2,所以可以通過求出2的個數來求操作次數

設\(f_i\)表示\(i\)變成1的過程中會生成的2的個數,有以下性質:

\(i\)為質數時,\(f_i=f_\),即質數\(i\)和\(i-1\)生成的2個數相同

\(i\)不為質數時,\(f_i=f_a*f_b ,(a*b=i)\),即兩數互不干擾,這裡利用這個性質將原數質因數分解即可

對於\(n=\prod^}}\),有\(ans=\prod*q_i}\)

之所以用2的個數表示答案,是因為假設一次操作消乙個2,但如果一開始\(n\)沒有2,就需要額外的一步來生成2

#include#define n 100005

using namespace std;

typedef long long ll;

int t,n;

int p[n],isnotp[n],cnt;

ll f[n];

template void read(t &x)

void init(int maxn) }}

int main()

printf("%lld\n",ans+flag);

} return 0;

}

數論 尤拉函式 HAOI2012 外星人

題目大意 給定乙個數n,問你這個數取多少次尤拉函式後變成1 題目型別 尤拉函式 input test 資料數量 每組乙個m,接下來m個pi,qi,為n的標準分解形式 output 輸出test行整數 sample input 1 2 2 23 1 sample output 題解 注意到只有phi ...

題解 P2350 HAOI2012 外星人

題目鏈結 還是本寶寶寫題解的一貫習慣 先吐槽吐槽這道題 相信不少同學第一眼一定沒有看懂題。因為我也沒看懂 初中 數學知識 對於函式 f x 有 f x 為該函式的反函式。而當 n n 時,f x 表示 f x 的 n 階導數。於是本寶寶看到這題後 一臉懵逼 炸了 喵 出題人您來告訴我尤拉函式怎麼求導...

2749 HAOI2012 外星人 數論

這個題的關鍵是要找出乙個與操作次數相關的量。這個量就是2 22在取 phi 過程中的2 22因子個數。因為如果一開始沒有2 22,那麼在某乙個大於2 22的質數 1 1 1後就會出現,一開始有2 22,那麼這次就會把這個2 22變成1 11。所以算一下過程中2 22的個數即可。include usi...