牛客挑戰29B 白井黑子 素因子分解,

2022-03-05 12:12:49 字數 906 閱讀 3013

題意:長度為n的序列a,定義f(x) 為x的各個數字相乘.

n<=2e5, 0<=a[i],k<=1e18. 問有多少對(i,j) 滿足f(a[i])*f(a[j]) 可以表示為某個自然數的k次冪.

f(x)= a1^p1 * a2^p2...ak^pk. f(y)=a1^q1*a2^q2..ak^qk

那麼f(x)*f(y)為某個x的k次冪, 則p1+q1肯定為k的倍數 .

因為ai只有4種可能,2,3,5,7. 用4維陣列或者map,int> 儲存每個數的質因子冪的狀態,求下每個冪關於k的補集即可.

0^0=1 特判k==0的狀態即可.

#include using namespace std;

typedef long long ll;

typedef pairii;

const int n=2e5+5,m=19;

ll n,k,x,pw[n];

ll mp[m*3][m*2][m][m];

int main()

if(flag)

if(k==0)

p2%=k;

p3%=k;

p5%=k;

p7%=k;

int q2=k-p2,q3=k-p3,q5=k-p5,q7=k-p7;

q2%=k;

q3%=k;

q5%=k;

q7%=k;

if(q2<=18*3&&q3<=18*2&&q5<=18&&q7<=18)

res+=mp[q2][q3][q5][q7];

res+=zero;

//cout

} //cout

cout

}

牛客 2020 11 14牛客小白月賽29 B

by 041 本人原文 簡單的說,對於乙個bool量x x 1 x x 0 0 x 1 1 x 0 x x 1 x x 0 x 所以,對於每一次操作,在有影響 上面的2 3 5三種情況 到的位置加入相應操作的標記最後整合就行 對於第i位 0的操作 清空之前該位置所有的操作,加上標記1 對於第i位 1...

牛客小白月賽29 B二進位制

牛客小白月賽29 b二進位制 題目描述 scimoon 有乙個壞掉的計算器,這個計算器僅接受 0 sim 2 1 的數 這個計算器只支援一種操作,舉個例子,輸入乙個數 x,這個數會按順序進行 n 次操作,在第 i 次操作中,有乙個操作符 op i 和乙個數 a i 如果 op i 1 表示這次操作是...

牛客挑戰賽38 B 子串翻轉

題目鏈結 思路 用乙個大小為m雙端佇列的雙端佇列 維護一下當前視窗的串是啥。翻轉就是把標記變一下。根據標記進行字元的進出。include using namespace std typedef long long ll const int n 3e6 10 define fi first defin...