安徽師大附中 你賽day7 T2 乘積 解題報告

2022-04-30 03:48:09 字數 1821 閱讀 5738

\(\mathrm\) 最近在潛心研究數學, 他發現了一類很有趣的數字, 叫做無平方因子數。 也就是這一類數字不能夠被任意乙個質數的平方整除, 比如\(6\)、\(7\)、\(10\)都是無平方因子數, 而\(12\)則不是。

所以 \(\mathrm\) 在思考乙個問題——選擇不超過 \(k\) 個 \(n\) 以內的正整數乘起來, 使得乘積是乙個無平方因子數, 有多少種取法? (每個數只能取一次)

第一行乙個整數 \(t\) 表示資料組數。

接下來 \(t\) 行, 每行兩個整數 \(n\),\(k\), 意思如題面所述。

對於每一組資料, 輸出乙個整數表示取法的方案數對 \(10^9+7\) 取模後的數值。

\(10\%\)的資料: \(n≤8\);

\(40\%\)的資料: \(n≤16\);

\(70\%\)的資料: \(n≤30\);

\(100\%\)的資料: \(1≤t≤5\); \(1≤k≤n≤500\)。

70pts 有非常多種搞法,然而狀壓是最難寫的但是最可能繼續玩出正解的。。

可是我太菜,比賽時寫了個麻煩的狀壓

\(dp[i][j][s]\)代表前\(i\)個數選擇了\(j\)個素數狀態為\(s\)的方案數

code:

#include #include const int n=502;

int num[30][10],dat[30];

int pri[n],is[n],v[n],cnt,tot;

int div[n][100];

void init()

for(int j=1;j<=cnt&&i*pri[j]<=500;j++)

if(!flag) continue;

++tot;

dat[tot]=i;

for(int j=1;j<=12;j++)

if(div[i][j])

num[tot][j]=1;

}}int mod=1e9+7;

int n0,k;

int dp[20][20][1200];

void work()

for(int i=1;;i++)//選數個數上界

k=(k<=n?k:n);

memset(dp,0,sizeof(dp));

for(int i=0;i<=n;i++) dp[i][0][0]=1;

int ans=0;

for(int i=1;i<=n;i++)//前i個數

for(int j=1;j<=k;j++)//取了j個

for(int s=1;s<1<>q-1)&1) las^=1《而正解只是運用分組揹包的思想

注意到大於19的質數只可能出現乙個

那我們實際上就只需要找到狀壓2,3,5,7,11,13,17,19這幾個素數就行了

其他大於19的素數按照這個素數進行分組,剩下的同時按前幾個素數做就可以了

很巧妙的思想,然而資料不好造,答案一樣的期望炒雞高

code:

#include #include #include #define ll long long

const int n=500;

const ll mod=1e9+7;

const int pri[9]=;

using namespace std;

vector g[n+10];

int belong[n+10],sta[n+10],n,k;

void init()

else if(i%pri[j]==0) {belong[i]/=pri[j];sta[i]|=1<2018.8.20

安徽師大附中 你賽day9 T2 富 解題報告

出於某些原因,苟先生在追殺富先生。富先生所在的地方是乙個 n times m 的網格,苟先生排出了他的狼狗大軍,共有 k 條狗,第 i 條狗所在的位置為 x i,y i 每條狗每個時刻都可以向 8 個方向前進一步。如果乙個格仔最快的一條狗需要 t 時刻才能到,那麼這個格仔就是 t 危險的,現在給你 ...

安徽師大附中 你賽day4T2 演講解題報告

眾所周知,mathrm 是一名天天 mathrm 的高水平選手。作為一民長者,為了向大家講述自己 mathrm 的經驗,他決定在乙個禮堂裡為大家舉辦一場演講。這個禮堂擁有 n times m 個位子,排成 n 行 m 列。每個位子都有一盞燈,一開始有的燈是亮的,有的燈是滅的。這個禮堂十分詭異,人們操...

安徽師大附中 你賽day4T1 金字塔 解題報告

zdrcl 帶著妹子們來到了胡夫金字塔周邊旅遊,發現這裡正在進行乙個有關金字塔的遊戲 遊戲規則如下 1 這裡的金字塔是乙個 n 階的二維金字塔。2 把金字塔的每一層從上往下從 1 到 n 順次標號,對於第 i 層,有 2 i 1 個格仔,且第 i 層的格仔比第 i 1 層少的兩個格仔恰好是第 i 1...