[bzoj3309] DZY Loves Math
題目大意
對於正整數n,定義f(n)為n所含質因子的最大冪指數。例如f(1960)=f(2^3 * 5^1 * 7^2)=3, f(10007)=1, f(1)=0。
給定正整數a,b,求
T≤10000
1≤a,b≤
分析
看到兩個sigma和(i,j),就要條件反射想到莫比烏斯反演。
首先令a≤b
列舉公約數,得到:
令T=dd’,得到:
設
g陣列的預處理看起來是帶log的。但是根據莫比烏斯函式的性質,如果
那麼設
可以發現f(d)只能取到k,k-1,現在令其中一個滿足ki=k的質因數為d的最大冪,如果f(d)=k,那麼ai=0,其它為0或1均可。然而一個a取0,就相當於給莫比烏斯函式乘1,取1就是乘-1。所以最終答案乘的係數是0。特殊情況:如果T是質數,乘的係數是1(因為沒有其它質因數了)。
如果f(d)=k-1,那麼ai=1,所有其它滿足ki=k的質因數也要讓對應的a值取1,這時剩下的質因數也和上面一樣,最後得到的係數是0。特殊情況:如果每個ki都等於k,那麼由於沒有剩下可以取0、1的質因數,它的係數也是1。
這樣就可以線性預處理了。
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N=1e7;
typedef long long LL;
int T,mu[N+5],tot,p[N],f[N+5];
LL s[N+5],ans;
bool bz[N+5];
char c;
int read()
{
for (c=getchar();c<'0' || c>'9';c=getchar());
int x=c-48;
for (c=getchar();c>='0' && c<='9';c=getchar()) x=x*10+c-48;
return x;
}
int main()
{
mu[1]=1;
for (int i=2;i<=N;i++)
{
if (!bz[i])
{
mu[i]=-1;
p[tot++]=i;
}
for (int j=0;j<tot && i*p[j]<=N;j++)
{
int I=i*p[j];
bz[I]=1;
if (i%p[j]==0)
{
mu[I]=0; break;
}
mu[I]=-mu[i];
}
}
for (int i=2;i<=N;i++) if (mu[i]!=0)
{
for (LL j=i;j<=N;j*=i) s[j]=-mu[i];
}
for (int i=1;i<=N;i++) s[i]+=s[i-1];
T=read();
while (T--)
{
int a=read(),b=read();
if (a>b) a^=b^=a^=b;
ans=0;
for (int i=1,j;i<=a;i=j+1)
{
j=min(a/(a/i),b/(b/i));
ans+=(s[j]-s[i-1])*(a/i)*(b/i);
}
printf("%lld\n",ans);
}
return 0;
}
相關推薦
[BZOJ3309]DZY Loves Math
int log || love 其他 會有 最小值 不能 while 題面戳我 題意:多組數據,給出n,m,求 \[\sum_{i=1}^{n}\sum_{j=1}^{m}f(\gcd(i,j))\] 其中\(f(i)\)表示\(i\)所含質因子的最大冪指數。 例如\(f(
bzoj3309: DZY Loves Math
article spa memset ont 質因數 Go can type sdn 第三次復習反演。。。 感覺第二次學的時候還是有點用的 整理了下思路。可以去看一下我的blog 這題就是第二種類型的題。然而我不會化簡K。。%PoPoQQQ #include&l
[BZOJ3309]DZY Loves Math(莫比烏斯反演+線性篩)
質因子 不存在 pan init swap i++ () 包含 love $\sum\limits_{T=1}^{n}\lfloor\frac{n}{T}\rfloor\lfloor\frac{m}{T}\rfloor\sum\limits_{d|T}f(d)\mu(\fr
[bzoj3309] DZY Loves Math
題目大意 對於正整數n,定義f(n)為n所含質因子的最大冪指數。例如f(1960)=f(2^3 * 5^1 * 7^2)=3, f(10007)=1, f(1)=0。 給定正整數a,b,求∑ai=1∑bj=1f((i,j)) T≤10000 1≤a,b≤
BZOJ3309 DZY Loves Math
n-1 lse name tro std gcd bre n) turn BZOJ3309 DZY Loves Math 參考自這位大佬的推導思路以及這位大佬的實現思路 題目簡述 定義\(f(n)\)為\(n\)所含質因子的最大冪指數,如\(f(18)=f(2*3^2)=
【bzoj3309】DZY Loves Math 莫比烏斯反演+線性篩
例如 一行 根據 優化 long long ast 以及 -1 變化 題目描述 對於正整數x,定義f(x)為x所含質因子的最大冪指數。例如f(1960)=f(2^3 * 5^1 * 7^2)=3, f(10007)=1, f(1)=0。給定正整數n,m,求$\sum\li
【BZOJ3309】DZY Loves Math(莫比烏斯反演)
namespace ... ++ bre getchar stream 那種 getc 分解質 【BZOJ3309】DZY Loves Math(莫比烏斯反演) 題面 求 \[\sum_{i=1}^a\sum_{j=1}^bf(gcd(a,b))\] 其中,\(f(x)\)
【BZOJ3309】DZY Loves Math - 莫比烏斯反演
題意: 對於正整數n,定義$f(n)$為$n$所含質因子的最大冪指數。例如$f(1960)=f(2^3 * 5^1 * 7^2)=3$,$f(10007)=1$,$f(1)=0$。 給定正整數$a,b$,求 $$\sum\limits_{i=1}^{a}\sum\limits_{j=1}^{b}f(gcd
【BZOJ3309】DZY Loves Math 解題報告
n+1 fin 什麽 tput its ini con 打表 取值 【BZOJ3309】DZY Loves Math Description 對於正整數\(n\),定義\(f(n)\)為\(n\)所含質因子的最大冪指數。例如\(f(1960)=f(2^3×5^1×7^2)=
Bzoj3481 DZY Loves Math III
set return time calc() mil and main log solved Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 310 Solved: 65 Description Input
[BZOJ 3309]DZY Loves Math 莫比烏斯反演
2-2 color 答案 圖片 pan 組合 != clu 固定 還是需要看題解T-T 枚舉d=gcd(i,j),得到 好了現在就要處理後邊這個函數了,可以無腦求,不過107顯然會T,當然要O(n)了 然後我們就觀察這個函數。。大力分析一下µ可能會帶來
【bzoj3560】DZY Loves Math V 歐拉函數
print bsp sca tdi rac for lov microsoft class 題目描述 給定n個正整數a1,a2,…,an,求 的值(答案模10^9+7)。 輸入 第一行一個正整數n。 接下來n行,每行一個正整數,分別為a1,a2,
[bzoj3560] DZY Loves Math V
它的 strong name pre mit pla log line align Description 給定n個正整數a1,a2,…,an,求 \[ \sum\limits_{i_1|a_1} \sum\limits_{i_2|a_2} … \sum\limits_{i
BZOJ3561 - DZY Loves Math VI
ble php .com 根據 1=1 script source else http Portal Description 共\(T(T\leq3)\)組測試數據。給出\(n,m(n\leq5\times10^5)\),求 \[ \sum_{i=1}^n \sum_{j=
bzoj 3512: DZY Loves Math IV
質因子 ans last pac desc 就是 math 直接 bre Description 給定n,m,求 模10^9+7的值。 Solution 設 \(S(n,m)\) 表示 \(\sum_{i=1}^{m}\phi(n*i)\) \(Ans=\sum_{i=1
BZOJ3560: DZY Loves Math V(歐拉函數)
search 給定 com www. long long geo getch http desc Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 557 Solved: 318[Submit][Status][Discuss
【bzoj3512】DZY Loves Math IV 杜教篩+記憶化搜索+歐拉函數
-i script 等於 code inpu 給定 names 數據規模 次方 Description 給定n,m,求\(\sum_{i=1}^{n}\sum_{j=1}^{m}\varphi(ij)\)模10^9+7的值。 Input 僅一行,兩個整數n,m。 Outpu
【刷題】BZOJ 3512 DZY Loves Math IV
read oid init const tps clas int 基礎 http Description 給定n,m,求 模10^9+7的值。 Input 僅一行,兩個整數n,m。 Output 僅一行答案。 Sample Input 100000 1000000000 S
BZOJ3481 DZY Loves Math III(數論+Pollard_Rho)
() abs names 貢獻 urn sort get tchar spa 考慮對於每一個x有多少個合法解。得到ax+by=c形式的方程。如果gcd(x,y)|c,則a在0~y-1範圍內的解的個數為gcd(x,y)。也就是說現在所要求的是Σ[gcd(x,P)|Q]*g
bzoj 3309 DZY Loves Math —— 莫比烏斯反演+數論分塊
style std swa swap ont amp getchar() mes 分塊 題目:https://www.lydsy.com/JudgeOnline/problem.php?id=3309 憑著上課所講和與 Narh 討論推出式子來; 竟然是第一次寫數論分塊!所