Mysql解方程 解方程(codevs 3732)

2021-10-18 06:28:57 字數 1625 閱讀 2967

題目描述

已知多項式方程:

a0+a1x+a2x^2+..+anx^n=0

求這個方程在[1, m ] 內的整數解(n 和m 均為正整數)

輸入輸出格式

輸入格式:

輸入檔名為equation .in。

輸入共n + 2 行。

第一行包含2 個整數n 、m ,每兩個整數之間用乙個空格隔開。

接下來的n+1 行每行包含乙個整數,依次為a0,a1,a2..an

輸出格式:

輸出檔名為equation .out 。

第一行輸出方程在[1, m ] 內的整數解的個數。

接下來每行乙個整數,按照從小到大的順序依次輸出方程在[1, m ] 內的乙個整數解。

輸入輸出樣例

輸入樣例#1:

2 10

-2輸出樣例#1:

輸入樣例#2:

2 10

-3輸出樣例#2:

輸入樣例#3:

2 10

輸出樣例#3:

說明30%:0

50%:0

70%:0

100%:0

分析:一看想是用高精度做,可能還會超時,就沒仔細做,打的暴力列舉,50分

正解:其實不是高精度……

對於很大的數,我們可以給它取模,因為等式兩邊取模仍然成立。但是列舉x來判斷的話會超時,所以這裡用到乙個技巧:如果乙個數x對於這個等式成立的話,那麼x+mod(模的那個數)也會成立。

需要注意的是,只用乙個數模可能會不對,所以多用幾個檢驗一下。

**:#include#include#include

#define m 110

#define n 1000010

#define ll long long

using namespacestd;chars[n];intn,m;

ll a[3][m],p[3]=;boolok[n];bool check(int x,intnum)

ll ans=0,w=1;for(int i=0;i<=n;i++)

ans=(ans+a[num][i]*w%p[num])%p[num];

w=(w*x)%p[num];

}if(!(ans%p[num]))return true;return false;

}intmain()

freopen("jh.in","r",stdin);

scanf("%d%d",&n,&m);for(int i=0;i<=n;i++)

scanf("%s",s);int l=strlen(s);bool flag=false;for(int j=1;j<=2;j++)

for(int k=x;k

a[j][i]=(a[j][i]*10%p[j]+(ll)s[k]-'0')%p[j];if(flag)a[j][i]=p[j]-a[j][i];

}for(int i=1;i<=p[1];i++)if(check(i,1))

int tot=0;for(int i=1;i<=m;i++)if(ok[i])tot++;

printf("%d\n",tot);for(int i=1;i<=m;i++)if(ok[i])printf("%d\n",i);return 0;

view code

解方程命令

求極限 limit 例 limit f,x,a,left 對表示式f求極限,變數為x,從左邊趨近a。inf 正無窮 inf 負無窮。求解線形方程 solve,linsolve 例 a 5 0 4 2 1 1 2 1 4 1 2 0 1 1 1 1 矩陣的行之間用分號隔開,元素之間用逗號或空格 b 3...

基本解方程

ncl是一家專門從事計算器改良與公升級的實驗室,最近該實驗室收到了某公司所委託的乙個任務 需要在該公司某型號的計算器上加上解一元一次方程的功能。實驗室將這個任務交給了乙個剛進入的新手zl先生。為了很好的完成這個任務,zl先生首先研究了一些一元一次方程的例項 4 3x 8 6a 5 1 2 2a 5 ...

數學 解方程

簡而言之,本題任務就是解方程。共有兩個子任務。作為小學生,我們只會解一元一次方程,一元一次方程最終都可以化為 ax n 的形式。現在問 對於給定的 n 要使得 x 有正整數解,總共可以取多少個不同的 a 呢?作為中學生,我們只會解二元一次不定方程,二元一次不定方程最終都可以化為 ax by n 的形...