秦九韶算法
P2312解方程
求解在[ 1 , m ]范围内的解
需要使用到一个算法
秦九韶算法:代码:
1 #include<iostream> 2 #include<cstdio> 3 using namespace std; 4 typedef long long ll; 5 const int p=1e9+7; 6 ll A[1000005]; 7 ll ans[103]; 8 ll py=0; 9 ll n,m; 10 11 inline ll Read() 12 { 13 ll sum=0,key=1; 14 char c=getchar(); 15 while(c<'0' || c>'9') 16 { 17 if(c == '-') key=-1; 18 c=getchar(); 19 } 20 while(c>='0' && c<='9') sum=((sum * 10) + c - '0')%p,c=getchar(); 21 return sum*key; 22 23 } 24 25 inline void print(ll x) 26 { 27 if(x<0) putchar('-'),x=-x; 28 if(x>9) 29 { 30 print(x/10); 31 } 32 putchar(x%10+'0'); 33 } 34 35 inline bool HA(ll x) 36 { 37 ll sum=0; 38 for(ll i=n;i>=1;i--) 39 sum=((A[i]+sum) * x) % p; 40 sum=(sum+A[0])%p; 41 return !sum; 42 } 43 44 int main() 45 { 46 int cnt=0; 47 int aux=true; 48 n=Read(); 49 m=Read(); 50 for(ll i=0;i<=n;i++) 51 A[i]=Read(); 52 for(ll i=1;i<=m;i++) 53 { 54 if(HA(i)) 55 { 56 cnt++; 57 ans[++py]=i; 58 aux=false; 59 } 60 } 61 if(aux==true) 62 { 63 cout<<cnt; 64 return 0; 65 } 66 print(cnt); 67 cout<<'\n'; 68 for(ll i=1;i<=py;i++) 69 { 70 print(ans[i]); 71 // cout<<ans[i]; 72 cout<<'\n'; 73 } 74 return 0; 75 }
-end-