比赛 防止浮躁的小练习v0.6 评测结果 AAAAAAAAAA
题目名称 解方程 最终得分 100
用户昵称 kito 运行时间 2.731 s
代码语言 C++ 内存使用 6.34 MiB
提交时间 2016-10-20 16:56:49
显示代码纯文本
#include<cstdio>
using namespace std;
#define	fcl	fclose(stdin);	fclose(stdout);	return 0
	#define	SUBMIT 2333
typedef long long LL;
LL prime[7]={0,10007,10039,10111,10181,10301};
LL n,m;
LL A[7][110];
LL Target[1000010];

int main(){
	#ifdef SUBMIT
	freopen("equationa.in","r",stdin);
	freopen("equationa.out","w",stdout);
	#endif
	scanf("%lld%lld",&n,&m);
	char ch;	bool flag=false;
	for(LL i=n;i>=0;--i){
		while(ch=getchar(),(ch<'0'||ch>'9')&&ch!='-');
		if(ch=='-')	flag=true;
		else{
			flag=false;
			for(int j=1;j<=5;++j){
				A[j][i]=ch-'0';
			}
		}
		while(ch=getchar(),ch>='0'&&ch<='9'){
			for(int j=1;j<=5;++j){
				A[j][i]=(A[j][i]*10%prime[j]+ch-'0')%prime[j];
			}
		}
		if(flag){
			for(int j=1;j<=5;++j){
				A[j][i]=prime[j]-A[j][i];
			}
		}
	}
	LL v;
	for(int j=1;j<=5;++j){
		for(LL x=1;x<=prime[j];++x){
			v=A[j][0];
			for(LL i=1;i<=n;++i){
				v=((v*x)%prime[j]+A[j][i])%prime[j];
			}
			if(v==0){
				for(LL i=x;i<=m;i+=prime[j]){
					Target[i]++;
				}
			}
		}
	}
	LL ANS=0;
	for(LL i=1;i<=m;++i){
		if(Target[i]==5){
			ANS++;
		}
	}
	printf("%lld\n",ANS);
	for(LL i=1;i<=m;++i){
		if(Target[i]==5){
			printf("%lld\n",i);
		}
	}
	#ifndef SUBMIT
	getchar();	getchar();
	#endif
	fcl;
}