noip2014 解方程 hash 秦九昭

2022-08-24 05:00:23 字數 2027 閱讀 6627

坑啊= =

選了好幾次質數,發現還是這一組靠譜

思路:每次mod之後求出所有解,再mod再求,看著複雜度差不多了就把沒重複的都輸出就行了

const mi:array[1..7] of int64=(12537,15437,17647,14677,10003,10009,10007

);var

n,m,shi,sum,x:int64;

i,j,k,y1:longint;

a:array[-1..102,-1..10000+9] of

int64;

flag:

array[-1..1000000+9] of

boolean;

c:char;

b:array[-1..102,1..7] of

int64;

f:array[-1..100000,1..7] of

boolean;

begin

readln(n,m);

fillchar(flag,sizeof(flag),true);

fillchar(f,sizeof(f),true);

for i:=0

to n do

begin

read(c);

if c='-'

then

begin j:=0; y1:=-1; end

else

begin y1:=1; j:=1; val(c,a[i,1],k); end

; a[i,

1]:=a[i,1]*y1;

while

not eoln do

begin

inc(j);

read(c);

val(c,a[i,j],k);

a[i,j]:=a[i,j]*y1;

end;

a[i,

0]:=j;

readln;

end;

for k:=1to7

dofor i:=0

to n do

begin

shi:=1

;

for j:=a[i,0] downto1do

begin

b[i,k]:=(b[i,k]+a[i,j]*shi mod mi[k]) mod

mi[k];

shi:=shi*10

modmi[k];

end;

end;

for k:=1to7

dofor i:=1

to mi[k] do

begin

sum:=0; x:=1

;

for j:=0

to n do

begin

sum:=(sum+x*b[j,k] mod mi[k]) mod

mi[k];

x:=x*i mod

mi[k];

end;

if sum<>0

then f[i,k]:=false;

end;

sum:=0

;

for i:=1

to m do

for k:=1to7

doif

not f[i mod mi[k],k] then

begin flag[i]:=false; break; end

;

for i:=1

to m do

if flag[i] then

inc(sum);

writeln(sum);

for i:=1

to m do

if flag[i] then

writeln(i);

end.

想學會這道題的同學們一定要自己打一遍,很重要23333

NOIP2014 解方程 題解

題目傳送門 題目描述 已知多項式方程 a 0 a1 x a2 x2 an xn 0 a0 a1 x a2 x 2 dots an x n 0 a0 a1 x a2 x2 an xn 0求這個方程在 1,m 1,m 1,m 內的整數解 n nn 和 m mm 均為正整數 輸入格式 輸入共 n 2 n ...

NOIP2014 解方程 題解

題目傳送門 題目描述 已知多項式方程 a0 a1 x a2 x 2 dots an x n 0 求這個方程在 1,m 內的整數解 n 和 m 均為正整數 輸入格式 輸入共 n 2 行。第一行包含 2 個整數 n,m 每兩個整數之間用乙個空格隔開。接下來的 n 1n 1 行每行包含乙個整數,依次為 a...

NOIP2014 解方程 數學)

本題重點考察數學知識,可分成以下三點 秦九韶演算法 取模運算律,long long等資料型別的細節。秦九韶演算法 假設有一元4次方程a0 a1 x a2 x2 a3x3 a4x4 0,那麼其等於 x x xa4 a3 a2 a1 a0 0。在此題中同理,最後算出答案判斷是否為0。取模運算律 資料型別...