日常訓練 mod

2022-05-31 04:36:08 字數 1665 閱讀 6914

給定\(p_1,p_2,…,p_n,b_1,b_2,...,b_m\),

求滿足\(x\;mod\;p_1\;\equiv\;a_1,x\;mod\;p_2\;\equiv\;a_2,...,x\;mod\;p_n\;\equiv\;a_n\)的\(x\)對\(b_1,b_2,...,b_m\)取模的結果.

第一行兩個整數\(n,m\).

接下來\(n\)行,每行有乙個整數\(a_i\).

接下來\(m\)行,每行有乙個整數\(b_i\).

\(m\)行,每行乙個整數,表示\(x\;mod\;b_i\)的結果.

4 312

321123

100

1

023

\(m=100,0為隨機生成的,\(p_i\)為第\(i\)小的質數.

中國剩餘定理+高精度???

這題只需記錄\(mod\;b_i\)結果.

\(ans.b[i]\)表示\(mod\;b_i\)的結果,\(mul.p[i]\)表示目前\(p_i\)尋找答案中每次加上的數,\(ans.p[i],mul.b[i]\)同理.

對於\(i\;\in\;[1,n]\),每次暴力\(+mul.p[i]\)直到\(ans.p[i]=a_i\),然後將每個\(mul.p[\;]\;\;\times\;p[i]\)(保證後面無論怎麼操作,\(ans.p[i]\;\equiv\;a_i(mod\;p_i)\).

(\(ans.b[\;],mul.b[\;]\)同步進行以上\("+","\times"\)操作.)

#include#include#include#include#include#include#include#include#include#include#define n 305

#define m 2000

using namespace std;

typedef long long ll;

struct modans,mul;

ll b[n];

int a[n],p[n],n,m,cnt;

bool u[m],flag;

inline void prime()

}}inline void init()

for(int i=1;i<=m;++i)

scanf("%lld",&b[i]);

prime();

if(!flag)

for(int i=1;i<=m;++i)

printf("%lld\n",ans.b[i]);

return;

}for(int i=1;i<=n;++i)

mul.p[i]=1%p[i];

for(int i=1;i<=m;++i)

mul.b[i]=1ll%b[i];

for(int i=1;i<=n;++i)

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

mul.p[j]=mul.p[j]*p[i]%p[j];

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

mul.b[j]=mul.b[j]*(ll)(p[i])%b[j];

} for(int i=1;i<=m;++i)

printf("%lld\n",ans.b[i]);

}int main()

日常訓練 壓縮

巨大的文字往往令人頭疼,特別是文字內容有大量重複的情況下,巨大的文字不便於運輸和閱讀,於是我們提出了noip nonsense obivous index pattern 荒謬的顯然索引法 一種 有效的 壓縮文字的方法。noip壓縮後的格式很特別,乙個文字壓縮後由若干個單元組成,每個單元由3部分組成...

日常訓練 Tree

j 對於h u j 時間複雜度的證明也是比較經典了,每次列舉的是sz eu s zev 相當於每次從a,b 中各任選一點,它們的lc a 為 u 這樣的點對列舉不會重複,因此總的時間複雜度為o n2 include include include include include using name...

日常訓練 school

description 眾所周知,家離學校很遠。於是,每天算準了時間出發,以保證能在上課鈴響前 秒到達學校。不幸的是,市最近正在修路。這就導致有些路可能無法通行,因而可能導致 遲到。不打算改變他的出發時間,現在他告訴你他通過每一條路的時間,他想要知道如果某條路被維修了,那麼他是否能避免遲到?inpu...