ACdream 1148 GCD SUM (久違的莫比烏斯)
#include #include #include using namespace std; typedef long long ll; const int N = 100000+5; int pri[N], mu[N], pnum, presum[N]; ll presum2[N]; bool vis[N]; void mobius(int n) { mu[1] = 1; pnum = 0; for(int i = 2;i <= n; i++) { if(!vis[i]) { pri[pnum++] = i; mu[i] = -1; } for(int j = 0;j < pnum; j++) { if(i*pri[j] > n) break; vis[i*pri[j]] = 1; if(i%pri[j] == 0) { mu[i*pri[j]] = 0; break; } mu[i*pri[j]] = -mu[i]; } } for(int i = 1;i <= n; i++) { presum2[i] = presum2[i-1] + i*mu[i]; } for(int i = 1;i <= n; i++) presum[i] = presum[i-1]+mu[i]; } int n, m; bool input() { return scanf("%d%d", &n, &m) == 2; } void solve() { int top = min(n, m); ll ans = 0, ansx = 0, ansy = 0; for(int i = 1;i <= top; i++) { int tmp1 = n/i, tmp2 = m/i; int nxt = min(n/tmp1, m/tmp2); //printf("i = %d tmp1 = %d tmp2 = %d nxt = %d\n", i, tmp1, tmp2, nxt); ans += (ll)(n/i)*(m/i)*(presum[nxt]-presum[i-1]); ansx += (ll)m/i*(n/i + (ll)n/i*(n/i))/2*(presum2[nxt] - presum2[i-1]); ansy += (ll)n/i*(m/i + (ll)m/i*(m/i))/2*(presum2[nxt] - presum2[i-1]); i = nxt; } printf("%lld %lld %lld\n", ans, ansx, ansy); } int main() { mobius(100000); while(input()) { solve(); } return 0; }
相關推薦
ACdream 1148 GCD SUM (久違的莫比烏斯)
#include #include #include using namespace std; typedef long long ll; const int N = 100000+5; int pri[N], mu[N], pnum, presum[N]; ll presum2[N]; bool v
SPOJ - PGCD Primes in GCD Table(莫比烏斯反演)
cnblogs -s def problems 前綴和 ret mage () eof http://www.spoj.com/problems/PGCD/en/ 題意: 給出a,b區間,求該區間內滿足gcd(x,y)=質數的個數。 思路: 設f(n)為 gc
【Project Euler】530 GCD of Divisors 莫比烏斯反演
rac 困難 efi pan opened can tps blank 分塊 【題目】GCD of Divisors 【題意】給定f(n)=Σd|n gcd(d,n/d)的前綴和F(n),n=10^15。 【算法】莫比烏斯反演 【題解】參考:任之洲數論函數.pdf 這個範圍
HDU - 4675 GCD of Sequence (莫比烏斯反演+組合數學)
gcd namespace 新的 ++i else if include 莫比烏斯 code mod 題意:給出序列[a1..aN],整數M和k,求對1-M中的每個整數d,構建新的序列[b1...bN],使其滿足: 1. \(1 \le bi \le M\) 2. \(gc
CO-PRIME(初探 莫比烏斯)NYOJ1066(經典)gcd(a,b)=1
put size 兩個 test hat ott == clas otto CO-PRIME 時間限制:1000 ms | 內存限制:65535 KB 難度:3 描寫敘述 This problem is so easy! Can you solve it
hdu 1695 GCD(莫比烏斯入門)
技術分享 sin urn cas str 由於 ons pre () 題意:求a<=x<=b ,x<=y<=d,中gcd(x,y)==k的數對個數 思路:題目可以轉化成求1<=x<=b/k,1<=y<=d/k中gcd(x,y)
【HDU1695】GCD(莫比烏斯反演)
重復 min put clas 題解 iostream fine har clu 【HDU1695】GCD(莫比烏斯反演) 題面 題目大意 求\(a<=x<=b,c<=y<=d\) 且\(gcd(x,y)=k\)的無序數對的個數 其中,你可以假定\(
【bzoj2820】YY的GCD 莫比烏斯反演
spa tex 給定 void fin include ans iostream while YY的GCD Description 神犇YY虐完數論後給傻×kAc出了一題 給定N, M,求1<=x<=N, 1<=y<=M且g
cf 990G GCD Counting (莫比烏斯反演 並查集)
In http 自己 har urn merge cto count read 990G 給你一棵樹,問你有多少個點對(x,y)(x\(\leq\)y),使得(x,y)簡單路徑上的點權值的\(gcd\)為\(i\),對於\(i\in [1,200000]\)輸出點對數目。
BZOJ 2820 YY的GCD 莫比烏斯反演
cstring std swap cst pac lap Go hint name 2820: YY的GCD Description 神犇YY虐完數論後給傻×kAc出了一題給定N, M,求1<=x<=N, 1<=y<=
[HDU1695]GCD + [HAOI2011]Problem b + [POI2007]ZAP-Queries【莫比烏斯反演】
最終 floor line cas pri int += problem cpp [HDU1695]GCD [HAOI2011]Problem b [POI2007]ZAP-Queries 令\[ans(n, m)=\sum_{i=1}^n\sum_{j=1}^m[GCD(
YY的GCD【莫比烏斯反演】
for amp spl .org init www. ref min r+ [Luogu2257]YY的GCD 求\(\sum_{i=1}^n\sum_{j=1}^m[(x, y)\)為質數\(]\) \(T \le {10}^4, 1\le n, m \le {10}^7
洛谷P2257 YY的GCD(莫比烏斯反演)
rac long pan min rim tdi ++ urn problem 傳送門 原來……莫比烏斯反演是這麽用的啊……(雖然仍然不是很明白) 首先,題目所求如下$$\sum_{i=1}^n\sum_{j
P2257 YY的GCD(莫比烏斯反演)
cstring ctype ... space problem get pct pre div P2257 YY的GCD luogu題解第一篇非常棒,當然你也可以point here(轉) 正題因為題解寫的太優秀所以沒得補充 這裏用了一個卡常技巧:循環展開 就是以代
UVA11426 GCD - Extreme (II) (尤拉函式/莫比烏斯反演)
UVA11426 GCD - Extreme (II) 題目描述 PDF 輸入輸出格式 輸入格式: 輸出格式: 輸入輸出樣例 輸入樣例#1: 10 100 200000 0 輸出樣例#1: 67 13015 143295493160 Solution 這道題我用莫比烏斯反演和尤拉函式都寫了一遍,發現
【HDU 1695】GCD(莫比烏斯反演)
GCD Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 16412 Accepted Submission(s): 6314 Pro
BZOJ 2820: YY的GCD [莫比烏斯反演]
題解: 和上一題相同的函式: 為滿足且和的的對數 為滿足且和的的對數 顯然,反演後得到 可以列舉每一個質數,套用上一題的做法,p相當於k,d*p也就是p的倍數了...很像上一題我WT1中的式子 其實d只要列舉到min(
Gcd HYSBZ - 2818 (莫比烏斯反演)
Gcd HYSBZ - 2818 給定整數N,求1<=x,y<=N且Gcd(x,y)為素數的 數對(x,y)有多少對. Input 一個整數N Output 如題 Sample Input 4 Sample O
luogu2257 YY的GCD(莫比烏斯反演)
luogu2257 題目描述:神犇YY虐完數論後給傻×kAc出了一題 給定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)為質數的(x, y)有多少對 kAc這種傻×必然不會了,於是向你來請教…… 多組輸入 輸入格式:第一行一個整數T
莫比烏斯反演 HDU1695 GCD
莫比烏斯函式 【通俗理解】 我們手裡有兩個函式,不妨F(x)和f(x),且F(x)是易知的,滿足上述(1)(2)中任意一個,則我們可以通過莫比烏斯反演得出f(n)的函式值。 【例題 HDU 1695