BZOJ 1101([POI2007]Zap-滿足x
1101: [POI2007]Zap
Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1646 Solved: 577
[Submit][Status][Discuss]
Description
FGD正在破解一段密碼,他需要回答很多類似的問題:對於給定的整數a,b和d,有多少正整數對x,y,滿足x<=a,y<=b,並且gcd(x,y)=d。作為FGD的同學,FGD希望得到你的幫助。
Input
第一行包含一個正整數n,表示一共有n組詢問。(1<=n<= 50000)接下來n行,每行表示一個詢問,每行三個正整數,分別為a,b,d。(1<=d<=a,b<=50000)
Output
對於每組詢問,輸出到輸出檔案zap.out一個正整數,表示滿足條件的整數對數。
Sample Input
24 5 2
6 4 3
Sample Output
32
HINT
對於第一組詢問,滿足條件的整數對有(2,2),(2,4),(4,2)。對於第二組詢問,滿足條件的整數對有(6,3),(3,3)。
Source
本題為mobius反演:
PS:計算過程不能用long long 不然TLE
公式推導
這部分讓我們看看PoPoQQQ的PPT《莫比烏斯反演》
#include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> #include<functional> #include<iostream> #include<cmath> using namespace std; #define For(i,n) for(int i=1;i<=n;i++) #define Fork(i,k,n) for(int i=k;i<=n;i++) #define MEM(a) memset(a,0,sizeof(a)); #define MAXN (50000+10) typedef long long ll; int p[MAXN]={0},tot; bool b[MAXN]={0}; int mu[MAXN]={0},sum[MAXN]={0}; inline int read() { int x=0,f=1;char ch=getchar(); while(ch<'0'&&ch>'9') { if (ch=='-') f=-1; ch=getchar(); } while(ch>='0'&&ch<='9') { x=x*10+ch-'0'; ch=getchar(); } return x*f; } void make_prime(int n) { tot=0; mu[1]=1; Fork(i,2,n) { if (!b[i]) p[++tot]=i,mu[i]=-1; For(j,tot) { if (i*p[j]>n) break; b[i*p[j]]=1; if (i%p[j]==0) { mu[i*p[j]]=0; break; } mu[i*p[j]]=-mu[i]; } } sum[0]=0; For(i,n) sum[i]=sum[i-1]+mu[i]; } int n,m,d; int calc() { int ans=0; for(int i=1,last=1;i<=n;i=last+1) { last=min(n/(n/i),m/(m/i)); ans+=(sum[last]-sum[i-1])*(n/i)*(m/i); } printf("%d\n",ans); return ans; } int main() { // freopen("bzoj1101.in","r",stdin); MEM(p) MEM(b) MEM(mu) MEM(sum) int N = 50000; make_prime(N); int T;T=read(); while(T--) { n=read(); m=read(); d=read(); if (n>m) swap(n,m); n/=d,m/=d; calc(); } return 0; }
相關推薦
BZOJ 1101([POI2007]Zap-滿足x
1101: [POI2007]Zap Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1646 Solved: 577 [Submit][Stat
BZOJ 1101: [POI2007]Zap(莫比烏斯反演)
傳送門 解題思路 \[ \sum\limits_{i=1}^n\sum\limits_{j=1}^mgcd(i,j)=k \] \[ \sum\limits_{i=1}^{\frac{n}{m}}\sum\limits_{j=1}^{\frac{m}{k}}gcd(i,j)=1 \] \[ \su
1101: [POI2007]Zap
typedef 同學 break void () pre bmi ref blank 1101: [POI2007]Zap Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2904 Solved: 1267[Submi
BZOJ#1101. Zap
emp get rim code can scan 多少 enter ont 1101: [POI2007]Zap Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3052 Solved: 1348 Descript
bzoj 1101 Zap —— 莫比烏斯反演
div spa targe ini bsp cstring bool con blank 題目:https://www.lydsy.com/JudgeOnline/problem.php?id=1101 直接莫比烏斯反演。 代碼如下: #include<cstdio
BZOJ 1101 Luogu P3455 POI 2007 Zap (莫比烏斯反演+數論分塊)
手動部落格搬家: 本文發表於20171216 13:34:20, 原地址https://blog.csdn.net/suncongbo/article/details/78819470 URL: (Luogu)https://www.luogu.org/problem/show?pid=3455 (BZOJ
[BZOJ1101][POI2007]Zap
min 預處理 sum zoj () printf sqrt scrip scu 1101: [POI2007]Zap Time Limit: 10 Sec Memory Limit: 162 MB Submit: 2732 Solved: 1164 [Submit]
[Luogu3455][POI2007]ZAP-Queries
ins uri logs have input common number already sin BZOJ(權限題) Luogu 題目描述 Byteasar the Cryptographer works on breaking the code of BSA (Byte
BZOJ1101: [POI2007]Zap(莫比烏斯反演)
tdi include AI prim ems 莫比烏斯 tput img gre 1101: [POI2007]Zap Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2951 Solved: 1293[Sub
bzoj 1098 [POI2007]辦公樓biu bfs+補圖+雙向鏈表
solved 必須 ++ ont 一行 ast color cst code [POI2007]辦公樓biu Time Limit: 20 Sec Memory Limit: 162 MBSubmit: 1543 Solved: 743[Submit][Statu
bzoj 1100 [POI2007]對稱軸osi manacher
return 小朋友 min 他還 大腦 set truct 光明 com [POI2007]對稱軸osi Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 771 Solved: 307[Submit][Status]
[POI2007]Zap
cpp 正整數 區間 void inline pac ++ span tar Description FGD正在破解一段密碼,他需要回答很多類似的問題:對於給定的整數a,b和d,有多少正整數對x,y,滿足x<=a,y<=b,並且gcd(x,y)=d。作為FGD的
BZOJ 1103: [POI2007]大都市meg
etc 解釋 text 單點 %d .com 分享圖片 格式 現在 Description 在經濟全球化浪潮的影響下,習慣於漫步在清晨的鄉間小路的郵遞員Blue Mary也開始騎著摩托車傳遞郵件了。 不過,她經常回憶起以前在鄉間漫步的情景。昔日,鄉下有依次編號為
[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(
bzoj 1098 [POI2007] 辦公樓 biu
include stream esp 如何 img 復雜度 ans 圖片 之間 # 解題思路 畫畫圖可以發現,只要是兩個點之間沒有相互連邊,那麽就必須將這兩個人安排到同一個辦公樓內,如圖所示: 那,我們可以建立補圖,就是先建一張完全圖,然後把題目中給出的邊都刪掉,這
bzoj1101/洛谷P3455 [POI2007]ZAP-Queries
之前看了但是沒有理解的莫比烏斯函式現在找題目練練手。。。 寒假裡面看的當時理解不了就沒有多管,導致現在寫預處理函式很懵逼。。 題意:給定n,m,d,求出1<=x<=n,1<=y<=m中使得gcd(x,y)=d的x,y的對數 最簡單的方法,O(n²)的暴力列舉
bzoj 1098 [POI2007]辦公樓biu——連結串列
題目:https://www.lydsy.com/JudgeOnline/problem.php?id=1098 求補圖的連通塊大小。與自己沒有邊的和自己在一個連通塊裡。 用連結串列把所有點串起來。先給自己有邊的打上標記,刪掉自己,然後訪問連結串列裡的元素;沒有標記的就從連結串列裡刪掉並加入棧,對每個棧裡
P3455 [POI2007]ZAP-Queries(莫比烏斯反演)
分塊 min esp -s 公式 time names \n prime 思路 和YY的GCD類似但是更加簡單了 類似的推一波公式即可 \[ F(n)=\sum_{n|d}f(d) \] \[ f(n)=\sum_{n|d}\mu(\frac{d}{n})F(d) \] \
【刷題】BZOJ 1098 [POI2007]辦公樓biu
Description FGD開辦了一家電話公司。他僱用了N個職員,給了每個職員一部手機。每個職員的手機裡都儲存有一些同事的 電話號碼。由於FGD的公司規模不斷擴大,舊的辦公樓已經顯得十分狹窄,FGD決定將公司遷至一些新的辦公樓。FG D希望職員被安置在儘量多的辦公樓當中,這樣對於每個職員來說都會有一個
bzoj1101: [POI2007]Zap(莫比烏斯反演)
原題連結 題目描述:FGD正在破解一段密碼,他需要回答很多類似的問題:對於給定的整數a,b和d,有多少正整數對x,y,滿足x<=a,y<=b,並且gcd(x,y)=d。作為FGD的同學,FGD希望得到你的幫助。 輸入格式:第一行包含一個正整數n,表示一共有n組詢問。(1<=n<=