NOIP2014提高组解方程

时间:2023-03-08 17:16:23

其实没有太难

但是不知道的话想不到

考场上大概有50分吧

 #include <iostream>
 #include <stdio.h>
 #include <queue>

 using namespace std;

  + ] = {  ,  ,  ,  ,  ,  ,  };
  + ];
  + ][ + ];
 int i , j , k;
  + ];
 ][ + ];
 queue < int > q;
 int num;

 bool check( int x )
 {
     ;
     ;
     power[] = ;
      ; i <= n ; i++ )
          power[i] = power[i - ] * x % mod[k];
      ; i <= n ; i++ )
     {
          ] != '-' )
              ans += ver[k][i] * power[i];
          else
              ans -= ver[k][i] * power[i];
          ans %= mod[k];
     }
      )
         ans += mod[k];
     return !( ans % mod[k] );
 }

 int main()
 {
     scanf( "%d %d" , &n , &m );
      ; i <= n ; i++ )
          scanf( "%s" , a[i] );
      ; k <  ; k++ )
          ; i <= n ; i++ )
              ; a[i][j] ; j++ )
             {
                 if( a[i][j] == '-' )
                     continue;
                 ver[k][i] *= ;
                 ver[k][i] += a[i][j] - ';
                 ver[k][i] %= mod[k];
             }
      ; k <  ; k++ )
           ; i < mod[k] && i <= m ; i++ )
               if( check( i ) )
                   for( j = i ; j <= m ; j += mod[k] )
                        ans[j]++;
      ; i <= m ; i++ )
           )
          {
              num++;
              q.push( i );
          }
     printf( "%d\n" , num );
     while( !q.empty() )
          printf( "%d\n" , q.front() ) , q.pop();
     ;
 }