• 秦九韶算法


    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<<'
    ';
    68     for(ll i=1;i<=py;i++)
    69     {
    70         print(ans[i]);
    71 //        cout<<ans[i];
    72         cout<<'
    ';
    73     }
    74     return 0;
    75 }

    -end-

  • 相关阅读:
    C#深复制和浅复制
    C#程序设计六大原则记录
    C#异步
    线程同步
    线程基础
    委托,事件
    XmlSerializer
    C#接口
    C#封装
    C#多态
  • 原文地址:https://www.cnblogs.com/-Iris-/p/12823259.html
Copyright © 2020-2023  润新知