记录编号 316480 评测结果 AAAAAAAAAA
题目名称 [NOIP 2014]解方程 最终得分 100
用户昵称 Gravatar安呐一条小咸鱼。 是否通过 通过
代码语言 C++ 运行时间 0.515 s
提交时间 2016-10-06 20:23:15 内存使用 4.29 MiB
显示代码纯文本
#include <cstdio>
#include <algorithm>
#include <queue>
#include <cstring>
#include <stack>
#include <iostream>
#include <cstdlib>
#include <cmath>
#define me( a , b ) memset( a , b , sizeof(a) )
#define rep( a , l , r ) for(int a = l ; a <= r ; ++ a )
#define res( a , r , l ) for(int a = r ; a >= l ; -- a )
using namespace std;
int prime[] = { 10007 , 10321 , 10357 , 10091 , 10111 };
int num[110][10] , len , flag , n ,m , cnt[1000100] ;
bool f[15000][10];
char ch[11000] ;
bool calc( int x ,int j )
{
	int tmp = 0;
	res( i , n , 0)
	{
		tmp = ( tmp * x  % prime[j]  + num[i][j] ) % prime[j] ;
	}
	if( !tmp )return 1 ;
	return 0 ;
}
int main()
{
	freopen("equationa.in", "r", stdin);
	freopen("equationa.out", "w", stdout);
	scanf( "%d%d" , &n , &m );
	rep( i , 0 , n )
	{
		flag = 1 ;
		scanf( "%s" , ch );
		len = strlen(ch);
		rep( l , 0 , len -1 )
		{
			if( ch[l] == '-' ) flag = -1 ;
			else rep( j , 0 , 4 ) num[i][j] =( ch[l] - '0' + num[i][j] * 10 ) % prime[j] ;
		}
		if( flag == -1 ) rep( j , 0 , 4 ) num[i][j] = prime[j] - num[i][j] ;
	}
	rep( i , 0 , 4 )rep( j , 1 , prime[i] - 1 )f[j][i] = calc( j , i );
	rep( i , 1 , m )
	{
		flag = 1;
		rep( j , 0 , 4 )
		{
			if( ! f[ i % prime[j] ][j] )
			{
				flag = 0 ; break ;
			}
		}
		if( flag )cnt[ ++ cnt[0] ] = i;
	}
	printf( "%d\n" ,cnt[0]);
	rep( i, 1 , cnt[0] )
	{
		printf( "%d\n" , cnt[i] );
	}
}