解方程(codevs 3732)
題目描述
已知多項(xiàng)式方程:
a0+a1x+a2x^2+..+anx^n=0
求這個(gè)方程在[1, m ] 內(nèi)的整數(shù)解(n 和m 均為正整數(shù))
輸入輸出格式
輸入格式:
輸入文件名為equation .in。
輸入共n + 2 行。
第一行包含2 個(gè)整數(shù)n 、m ,每?jī)蓚€(gè)整數(shù)之間用一個(gè)空格隔開(kāi)。
接下來(lái)的n+1 行每行包含一個(gè)整數(shù),依次為a0,a1,a2..an
輸出格式:
輸出文件名為equation .out 。
第一行輸出方程在[1, m ] 內(nèi)的整數(shù)解的個(gè)數(shù)。
接下來(lái)每行一個(gè)整數(shù),按照從小到大的順序依次輸出方程在[1, m ] 內(nèi)的一個(gè)整數(shù)解。
輸入輸出樣例
輸入樣例#1:
2 10 1 -2 1輸出樣例#1:
1 1輸入樣例#2:
2 10 2 -3 1輸出樣例#2:
2 1 2輸入樣例#3:
2 10 1? 3? 2? ?輸出樣例#3:
0說(shuō)明
30%:0<n<=2,|ai|<=100,an!=0,m<100
50%:0<n<=100,|ai|<=10^100,an!=0,m<100
70%:0<n<=100,|ai|<=10^10000,an!=0,m<10000
100%:0<n<=100,|ai|<=10^10000,an!=0,m<1000000
分析:一看想是用高精度做,可能還會(huì)超時(shí),就沒(méi)仔細(xì)做,打的暴力枚舉,50分正解:其實(shí)不是高精度……對(duì)于很大的數(shù),我們可以給它取模,因?yàn)榈仁絻蛇吶∧H匀怀闪ⅰ5敲杜ex來(lái)判斷的話(huà)會(huì)超時(shí),所以這里用到一個(gè)技巧:如果一個(gè)數(shù)x對(duì)于這個(gè)等式成立的話(huà),那么x+mod(模的那個(gè)數(shù))也會(huì)成立。需要注意的是,只用一個(gè)數(shù)模可能會(huì)不對(duì),所以多用幾個(gè)檢驗(yàn)一下。代碼: #include<cstdio> #include<iostream> #include<cstring> #define M 110 #define N 1000010 #define ll long long using namespace std; char s[N]; int n,m; ll a[3][M],p[3]={0,10007,1000001397}; bool ok[N]; bool check(int x,int num) {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; } int main() {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++){int x=0;if(s[0]=='-'){flag=true;x=1;}for(int k=x;k<l;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)){for(int j=i;j<=m;j+=p[1])if(check(j,2))ok[j]=true;}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?
轉(zhuǎn)載于:https://www.cnblogs.com/harden/p/5785170.html
與50位技術(shù)專(zhuān)家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的解方程(codevs 3732)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【C语言重点难点精讲】C语言中的重要符号
- 下一篇: win32应用程序创建流程