多項式求值

2021-08-13 21:04:50 字數 1289 閱讀 4519

題目描述

學了數論後,小傑最近對整係數多項式在整點的取值感興趣,他現在來求助你幫他計算。

乙個整係數多項式通常表示為f(x)=a0+a1x+a2x2+a3x3+⋯+anxn,其中ai(i=0,1,2,⋯,n)為整數。

給定x∈z,求出f(x)mod1000000007。

輸入描述:

多組讀入。

每組的第一行,表示多項式f(x)

接下來是乙個整數n,接著一行有n個整數x,你需要求值f(x) mod 1000000007

組數不超過100,x在int表示的範圍內,f(x)所有項的係數和指數都在int表示的範圍內(指數保證非負)。

輸出描述:

對於每乙個,在單獨的一行中輸出乙個整數。

示例1

輸入3x^2+6x+10-3x

4 0

1 2 3輸出

10 16

28 46

備註:65%左右的多項式項數不超過20,查詢數不超過20

25%左右的多項式項數不超過100,查詢數不超過25

10%左右的多項式項數不超過10000,查詢數不超過100

注意:對於f(x)的單項式aix^i(i!=0),若係數ai為0,我們有時會忽略這些項,若i=1,可能表示為a1x^i或是a1x。因為某些原因,對於冪次相同的單項式可能出現多次。

#include

using

namespace

std;

#define ll long long

const ll mod = 1e9 + 7;

const ll maxn = 1e8;

char s[maxn];

int a[maxn] , b[maxn] , n = 0 , q;

void ini ()

, y[2] = , f = 1;

int len = strlen (s);

s[len++] = '+';

for (int i = 0; iif (s[i] <= '9'&&s[i] >= '0')

else

if (s[i] == 'x')

t = 1;

else

if (s[i] == '+' || s[i] == '-')

}}inline

int powf (int a , int b)

int main ()

}}

我們用a儲存係數,b儲存指數然後乙個個項按個運算過去即可。

多項式求值

例2 8 多項式求值 考察多項式p x n cix i i 0 如果cn 0,則p 是乙個n 維多項式。下面程式可用來計算對於給定的值x,p x 的實際取值。假定根據f o r迴圈內部所執行的加和乘的次數來估算時間複雜性。可以使用維數n 作為例項特徵。進入f o r迴圈的總次數為n,每次迴圈執行1次...

多項式求值

輸入的第一行為乙個整數 m m 1 leq m 181 m 18 表示多項式共有 m m 項。之後輸入 m m 行,每行有兩個元素,分別表示多項式各項的係數 c c 與次數 e e 1 leq c i 1001 ci 10 0,1 leq n 251 n 25 最後一行為待求多項式的變數值 x 0x...

4 2 多項式求值

本題要求實現乙個函式,計算階數為n,係數為a 0 a n 的多項式 函式介面定義 double f int n,double a,double x 其中n是多項式的階數,a中儲存係數,x是給定點。函式須返回多項式f x 的值。裁判測試程式樣例 include define maxn 10 doubl...