給定\(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...