整除符號為 |,d|n 在計算機語言中可被描述為 n%d == 0。
現有一算式 n|xm
x
m- x,給定 n,m,求 [1, n] 以內 x 解的個數。
解可能很大,輸出取模 998244353。
其中 n 的給定方式是由 c 個不超過 t 的質數的乘積給出的,c 和 t 的範圍會在資料範圍中給出。
第一行乙個 id 表示這個資料點的標號。
多組資料,其中第二行乙個整數 t 表示資料組數。對於每一組資料:
第一行兩個整數 c 和 m。
第二行 c 個整數,這些整數都是質數,且兩兩不同,他們的乘積即為n。
由於你可以通過輸入求出 t,輸入不再給出。
對於每組資料輸出一行,表示解的個數。
input
0
12 3
2 3
output
6
其中所有資料點都滿足 1 ≤ c ≤ 50,1 ≤ t ≤ 104104
,1 ≤ m ≤ 109109
,1 ≤ t ≤10000。
時間限制:
2.5s
2.5s
空間限制:
256mb
256mb
中國剩餘定理求方案數
暴力是對每個方程用快速冪列舉出可能解最後乘起來,80分
優秀的做法是用積性函式優化掉合數的快速冪,ac
#include
using namespace std;
#define rep(i,j,k) for(int i = j;i <= k;++i)
#define repp(i,j,k) for(int i = j;i >= k;--i)
#define rept(i,x) for(int i = linkk[x];i;i = e[i].n)
#define p pair
#define pil pair
#define pli pair
#define pll pair
#define pb push_back
#define pc putchar
#define mp make_pair
#define file(k) memset(k,0,sizeof(k))
#define ll long long
const
int p = 998244353;
int t[60];
int num[60];
int ans;
int c,m;
int prime[11000] , tot;
bool flag[10010];
int read()
while(c >= '0' && c <= '9') sum = sum * 10 + c - 48,c = getchar();
if(flag) return sum;
else
return -sum;
}int pow(int a,int x,int p)
return sum;
}int mi[10100];
void work(int m,int n,int x)
rep(j,1,tot)
num[x] += mi[i] == i;
}} void print(int x)
if(x >= 10)
putchar('0' + x % 10);
}void init()
int main()
五校聯考模擬賽Day2T2矩陣 容斥原理
n m 的網格,對其進行黑白染色,問每一行每一列至少有乙個黑格仔的方案數。考場上只會 n 3 的dp,還和指數級列舉乙個分qwq 設 f i j 表示到了第 i 行,已經有 j 列被染黑,然後暴力轉移上一行有幾個黑格仔 正解是容斥 首先固定好列,也就是保證每一列都有乙個黑格仔 這樣的方案是 2 n ...
嵊州普及Day2T2
題意 對於n個數的數列,進行排列,求第m個大於此數列的數列。思路 查詢後2個是否逆序,若是,將後3個遞迴。如此運算,找後面大於此數中最小數交換,然後將後面數列順序排列。相對簡單。見 include include include include include using namespace std...
集訓Day2 T2 新殼棧
description 小z設計了一種新的資料結構 新殼棧 首先,它和傳統的棧一樣支援壓入 彈出操作。此外,其棧頂的前c個元素是它的殼,支援翻轉操作。其中,c 2是乙個固定的正整數,表示殼的厚度。小z還希望,每次操作,無論是壓入 彈出還是翻轉,都僅用與c無關的常數時間完成。聰明的你能幫助她程式設計實...