Codeforces Round #694 (Div. 2) D. Strange Definition 质因子分解 + 平方数
傳送門
題意: 定義相鄰數(shù)為lcm(x,y)gcd(x,y)\frac{lcm(x,y)}{gcd(x,y)}gcd(x,y)lcm(x,y)?是一個(gè)平方數(shù),則xxx和yyy是相鄰的。現(xiàn)在給出q個(gè)詢問,每次詢問一個(gè)iii,表示詢問第iii秒后max1<=i<=ndimax_{1<=i<=n}d_imax1<=i<=n?di?,did_idi?表示與aia_iai?為相鄰數(shù)的個(gè)數(shù)。注意每一秒數(shù)組都會(huì)改變成與aia_iai?是相鄰數(shù)的乘積。
思路: 先考慮怎么化簡lcm(x,y)gcd(x,y)\frac{lcm(x,y)}{gcd(x,y)}gcd(x,y)lcm(x,y)?,我們知道lcm(x,y)=x?ygcd(x,y)lcm(x,y)=\frac{x*y}{gcd(x,y)}lcm(x,y)=gcd(x,y)x?y?,帶入得x?ygcd(x,y)2\frac{x*y}{gcd(x,y)^2}gcd(x,y)2x?y?,繼續(xù)化簡(x?ygcd(x,y))2(\frac{\sqrt{x*y}}{gcd(x,y)})^2(gcd(x,y)x?y??)2,所以我們可以知道如果兩個(gè)數(shù)是相鄰的,那么他們乘積一定是完全平方數(shù)。我們需要知道完全平方數(shù)有什么特點(diǎn),顯然他們的質(zhì)因子的冪數(shù)都是偶數(shù),那么兩個(gè)數(shù)相乘為平方數(shù)需要滿足什么條件呢?也比較容易想到他們的質(zhì)因子冪數(shù)相加為偶數(shù),那么我們?nèi)绻诔酥熬桶阉麄兊馁|(zhì)因子的冪數(shù)模2,得到兩個(gè)新的數(shù),這兩個(gè)新數(shù)必須相等的時(shí)候乘起來才能是平方數(shù)。那么這就比較顯然了,我們可以用mp[i]mp[i]mp[i]表示iii出現(xiàn)的次數(shù),第0秒的時(shí)候只需要取一個(gè)maxmaxmax即可。考慮第零秒到第二秒什么變了,什么沒變。我們下面把相等的數(shù)的集合稱為一個(gè)團(tuán),且以下的數(shù)的質(zhì)因子冪數(shù)默認(rèn)是模2意義下的。 如果一個(gè)團(tuán)的數(shù)量為偶數(shù),那么把他們乘起來之后,他們的質(zhì)因數(shù)的冪數(shù)都為偶數(shù),就變成1了。如果一個(gè)團(tuán)的數(shù)量為奇數(shù),乘起來之后的質(zhì)因數(shù)的冪數(shù)仍為奇數(shù)。讓后特殊處理下1的情況就好啦。可以發(fā)現(xiàn)從第1秒之后他們的數(shù)量不會(huì)變,只需要先得到第零秒的,再得到偶數(shù)變乘1的數(shù)量,讓后加上原來1的數(shù)量,與第零秒取maxmaxmax即可。
讓后分解質(zhì)因子肯定不能n\sqrt{n}n?分解,這里可以記一下每個(gè)數(shù)的最小質(zhì)因數(shù),讓后lognlognlogn分解即可。
總結(jié)
以上是生活随笔為你收集整理的Codeforces Round #694 (Div. 2) D. Strange Definition 质因子分解 + 平方数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 祝高考成功的诗句 祝高考成功的诗句有哪些
- 下一篇: Codeforces Round #69