思路:
係數的範圍有$10^$,但是用高精度做顯然不現實,因此可以考慮乙個類似於「雜湊」的做法,
對方程兩邊同時取模,如果取的模數足夠多,正確率就很高了。
中間對多項式的計算可以使用$o(n)$的秦九韶演算法。
然而,我的模數試了很多種都不能a,看了題解發現只要對$1000000007$乙個數取模就ac了?
1 #include2 #include3試了很多個模數都沒能ac的**:const
long
long mod=1000000007
;4 inline long
long
getll()
12const
long
long n=100,m=1000001;13
long
long
n;14
long
long
a[n];
15long
long ans[m]=;
16 inline bool check(const
long
long
x) 21
return sum==0;22
}23intmain()
30for(long
long i=0;i<=ans[0];i++) printf("
%lld\n
",ans[i]);
31return0;
32 }
1 #include2 #include3 #include4 inline intview codegetint()
11const
int mod_size=5;12
const
int mod[mod_size]=;
13 inline std::tuplegettuple() 23}
24return sgn?std::make_tuple(mod[0]-x[0],mod[1]-x[1],mod[2]-x[2],mod[3]-x[3],mod[4]-x[4]):std::make_tuple(x[0],x[1],x[2],x[3],x[4
]);25}26
const
int n=100,m=1000001;27
intn;
28int
a[mod_size][n];
29int ans[m]=;
30 inline bool check(const
intx) 36}
37bool ret=true;38
for(int i=0;isum[i];
39return
ret;40}
41int
main()
52for(int i=1;i<=m;i++) if(check(i)) ans[++ans[0]]=i;
53for(int i=0;i<=ans[0];i++) printf("
%d\n
",ans[i]);
54return0;
55 }
NOIP2014提高組 解方程
noip2014 提高組 day2 試題。已知多項式方程 a0 a1 x a2 x2 an xn 0 求這個方程在 1,m 內的整數解 n 和 m 均為正整數 輸入共 n 2 行。第一行包含 2 個整數 n m,每兩個整數之間用乙個空格隔開。接下來的 n 1 行每行包含乙個整數,依次為 a0,a1,...
NOIP2014提高組 解方程
題目傳送門 習慣性放洛谷的鏈結 這一題看起來資料範圍巨大無比,需要使用各種玄學方法,看了題解後整個人懵逼了.對於30 的資料,0 該資料範圍直接高精度,在 1,m 的範圍內暴力列舉即可。時間複雜度為 o n m len 其中 len 表示高精度計算過程中數字的位數。對於50 的資料 0 我們考慮用秦...
NOIP2014提高組 解方程
對於30 的資料,n 2,暴力帶入試解。對於50 的資料,ai很大,結合高精乘法和霍納演算法暴力代入試解。高精乘法,時間複雜度是很恐怖的而且我不懂寫。注意到雖然ai很大,但是m還是在int範圍內的。繼續考慮暴力試解。考慮到0 mod k 0 k n 那麼當f x 0時,f x mod k 0。但是反...