解方程
Posted ainiyuling
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解方程相关的知识,希望对你有一定的参考价值。
怎么求解呢?
其实我们可以把左边的式子当成一个算式来计算,从1到m枚举,只要结果是0,那么当前枚举到的值就是这个等式的解了。可以通过编写一个bool函数来判断算式的值是不是0~
至于如何计算这个看起来又臭又长(雾)的多项式,用秦九韶算法就可以解决啦~
#include<algorithm> #include<iostream> #include<iomanip> #include<cstring> #include<cstdio> #include<cmath> using namespace std; typedef long long ll; const int p=1000000007; bool t=true; int n,m,ans,cnt,sum=0; int A[103],key[1000003]; ll read() ll sum=0,fg=1; char c=getchar(); while(c < ‘0‘ || c > ‘9‘) if(c==‘-‘) fg=-1; c=getchar(); while(c >=‘0‘ && c <=‘9‘) sum=((sum*10)+c-‘0‘)%p; c=getchar(); return sum*fg; void print(int x) if(x<0) putchar(‘-‘); x=-x; if(x>9) print(x/10); putchar(x%10+‘0‘); bool calc(ll x) sum=0; for(ll i=n;i>=1;i--) sum=((A[i]+sum)*x)%p; sum=(sum+A[0])%p; return !sum; int main() n=read(); m=read(); for(ll i=0;i<=n;i++) A[i]=read(); for(ll i=1;i<=m;i++) if(calc(i)) t=false; ans++; key[++cnt]=i; if(t) cout<<ans<<endl; return 0; print(ans); printf("\n"); for(ll i=1;i<=cnt;i++) print(key[i]); printf("\n"); return 0;
以上是关于解方程的主要内容,如果未能解决你的问题,请参考以下文章