description
小 h 是乙個收藏家,他喜歡收藏正整數。小 h 有乙個習慣,那就是在他睡覺之前,計算在
他收藏的所有正整數中,有多少對正整數的最大公因數恰好是 k。
小 h 每一天可能會新收藏乙個正整數,當然,也可能因為某些原因丟棄乙個正整數。這使
得他收藏的正整數在不斷變化,每天睡前計算出來的值也可能不一樣。不過 k 是永遠不會變的。
同時,小 h 保證,k 是 1 或質數。
小 h 想知道,在他每新收藏乙個正整數,或丟棄乙個正整數之後,還有多少對正整數的最
大公因數是 k 呢?
input
第一行兩個整數 n,k。
接下來 n 行,每行兩個整數 a,b。
• 如果 a = 0,表示小 h 丟棄了乙個他收藏的正整數 b。如果此時小 h 收藏的正整數中沒有
b,那可能是小 h 記錯了,因此不需要作出任何改變。
• 如果 a = 1,表示小 h 新收藏了乙個正整數 b。注意,小 h 可以收藏很多個相同的正整數。
output
輸出 n 行,每行乙個整數,表示一次丟棄或者收藏之後的答案。
sample input
【樣例 1 輸入】
5 21 2
1 40 2
1 21 2
【樣例 2 輸入】
8 31 3
0 30 3
1 31 6
1 91 12
1 2sample output
【樣例 1 輸出】01
013【樣例 2 輸出】00
0013
55data constraint
記 z 為小 h 收藏過的正整數中的最大值。
對於所有資料,1 ≤ k ≤ z。
將每個數/=k,忽略%k!=0的數
考慮容斥原理,那麼每新加入乙個數 b,答案將增加
其中 cnt[d] 表示目前集合裡有多少個數是 d 的倍數。
#include
#define ll long long
using
namespace std;
const
int n =
2e5+5;
vector<
int> g[n]
;int n,k,cnt[n]
,a[n]
,m =
100000
,miu[n]
;ll ans;
bool bz[n]
;ll c2
(ll x)
void
add(
int x)
}void
del(
int x)
}int
main()
}scanf
("%d%d"
,&n,
&k);
while
(n--
)}
JZOJ 省選模擬 數二數(two)
第一行正整數n和p output 輸出乙個數,表示答案對p取模。sample input 樣例輸入1 3 1000000007 樣例輸入2 7 999997543 sample output 樣例輸出1 48樣例輸出2 要區別所有的位置,必須滿足每個位置的詢問集合不同。定義f i 表示一共i個位置的...
JZOJ 省選模擬 string
一行乙個整數表示答案。sample input 樣例輸入 3 3sample output 樣例輸出 首先我們忽略重複的字串,定義 n 表示長度為 n 的回文串,或由兩個回文串拼成的字串數量。那麼可以通過列舉第乙個回文串的長度 可以為 0 可以算出f n 但是正如剛才所說,會對如 abaaba 這樣...
JZOJ 省選模擬 Moorio Kart
description 由於目前可供奶牛們使用的約會 並沒有給 farmer john 留下深刻印象,他決定推出乙個基於新匹配演算法的奶牛交友 該演算法可基於公牛和母牛間的共同興趣對公牛和母牛進行匹配。bessie 在尋找情人節 barn dance 的合作夥伴時,決定試用這個 在註冊賬戶之後,fj...