洛谷P2312 解方程 (Hash 數學)

2021-08-09 12:03:22 字數 1059 閱讀 5682

題目傳送門:

題目分析:一道腦洞很大的題……這要是在考場上我絕對暴力高精度水50走人。

要判斷乙個很算式的結果是不是0,而且算式中的數字都很大,我們可以將算式中的數字模幾個大質數,看算出來的結果是否都為0。於是這題我們將每個係數模幾個大質數,再暴力將[1,m]中的數代入檢驗,就有70分了。

至於100分……要用到乙個很簡單的結論:f(x)%p=f(x%p)%p,也就是說只要列舉[0,p-1]就行了。將質數p的大小控制在104

左右,就能ac。

code:

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

const

int maxn=105;

const

int maxm=10010;

const

int m[6]=;

int a[6][maxn];

bool vis[6][maxm];

char s[maxm];

int n,m;

bool judge(int x)

int main()

}for (int j=0; j<6; j++)

for (int i=0; iint sum=0,v=1;

for (int k=0; k<=n; k++) sum=(sum+v*a[j][k])%m[j],v=v*i%m[j];

if (sum) vis[j][i]=true;

}int num=0;

for (int i=1; i<=m; i++) if ( judge(i) ) num++;

printf("%d\n",num);

for (int i=1; i<=m; i++) if ( judge(i) ) printf("%d\n",i);

return

0;}

洛谷p2312 解方程

清明培訓qwq,明天就要回學校了qwq拒絕 行吧我洛谷都四天沒碰了 解方程 傳送門 演算法標籤 作為乙個提高 省選 的題 丁大佬真的很有幽默感emmm include const long long mod int 1e9 7 const int maxn 100 5 const int maxm ...

洛谷 P2312 解方程

已知多項式方程 a 0 a 1x a 2x 2 a nx n 0 用latex好看多了 求這個方程在 1,m 內的整數解 n 和m 均為正整數 輸入格式 輸入檔名為equation in。輸入共n 2 行。第一行包含2 個整數n m 每兩個整數之間用乙個空格隔開。接下來的n 1 行每行包含乙個整數,...

洛谷P2312 解方程題解

已知多項式方程 a 0 a 1x a 2x 2 cdots a nx n 0 求這個方程在 1,m 內的整數解 n 和 m 均為正整數 輸入共 n 2 行。第一行包含 2 個整數 n,m 每兩個整數之間用乙個空格隔開。接下來的 n 1 行每行包含乙個整數,依次為 a 0,a 1,a 2 ldots ...