給乙個數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...